Java、IDEA笔记

  1. 一个java文件A里面只能有一个public类B,且A的文件名需要和B的类名相同
  2. Mytest里面有main方法,需要用到MyCycle类和UniCycle类,我们需要把MyCycle类和UniCycle类打包成一个package。在这两个类的首行写package com.pxz.cycle;包名需要和包内java文件层次相同。在idea中,文件层次是在定义包名时自动生成的。比如包名com.pxz.cycle,idea就会生成com/pxz/cycle这样的文件结构。
  3. 在idea的settings中,可以设置自动添加包和自动移除包。
    这里写图片描述
  4. 多态基本概况
//Mytest.java
public class Mytest {
    static void fun(Super s) {
        System.out.println("s.v=" + s.v);
        System.out.println("s.getV()=" + s.getV());
    }
    public static void main(String args[]) {
        Super s1 = new Sub();
        fun(s1);
        Sub s2 = new Sub();
        fun(s2);
        Super s3 = new Super();
        fun(s3);
    }
}
class Sub extends Super {
    public int v = 1;
    public int getV() {
        return v;
    }
}
class Super {
    public int v = 0;
    public int getV() {
        return v;
    }
}
s.v=0           //字段没有多态,由函数传入参数的类型决定
s.getV()=1      //方法有多态,由参数本身类型决定
s.v=0           //字段没有多态,由函数传入参数的类型决定
s.getV()=1      //方法有多态,由参数本身类型决定
s.v=0
s.getV()=0
  1. 成员变量和静态方法不能进行多态
//Mytest.java
public class Mytest {
    public static void main(String args[]) {
        Super s1 = new Sub();
        System.out.println("s1.v=" + s1.v);
        System.out.println("s1.getV=" + s1.getV());
        s1.getString();

        Super s2 = new Super();
        System.out.println("s2.v=" + s2.v);
        System.out.println("s2.getV=" + s2.getV());
        s2.getString();

        Sub s3 = new Sub();
        System.out.println("s3.v=" + s3.v);
        System.out.println("s3.getV=" + s3.getV());
        s3.getString();
    }
}
class Sub extends Super {
    public int v = 1;
    public int getV() {
        return v;
    }
    public static void getString() {
        System.out.println("Sub");
    }
}
class Super {
    public int v = 0;
    public int getV() {
        return v;
    }
    public static void getString() {
        System.out.println("Super");
    }
}
s1.v=0          //字段没有多态,由定义对象类型决定(new前面的类型)
s1.getV=1       //方法有多态,由对象本身类型决定(new后面的对象)
Super           //static没有多态,由定义对象类型决定(new前面的类型)
s2.v=0
s2.getV=0
Super
s3.v=1
s3.getV=1
Sub
  1. 抽象类、接口
    http://www.cnblogs.com/felixzh/p/5938544.html
原文地址:https://www.cnblogs.com/season-peng/p/6713487.html