1.一个包里面有两个类,test和test2,test2 继承test,但是就是输出不了 test中变量a 的值,报错 Cannot make a static reference to the non-static field a
后得知,原来 statci 静态方法中不能引用非静态变量,把 test中 的 public int a 改为 static int a 即可
2.
3.
4.Java是不允许多继承的
5.静态方法和对象无关,所以静态方法也就不存在方法覆盖这么一说
静态方法一般使用类名来调用
6.this是不能使用在 静态方法中的 ,this() 只能使用在构造方法的第一行中
7.
8.写代码的好习惯
如果没有构造方法的话,我们会写一个默认的无参构造方法,因为在继承的时候,比如说A类继承B类,B类中没有写构造方法,系统会自动创建默认构造方法,
A类是继承B类,A类构造方法在创建的时候,就会默认在第一行加上 super(); ,意思为继承 父类的构造方法
https://www.bilibili.com/video/BV1Rx411876f?p=465&spm_id_from=pageDriver
9.构造方法的第一行必须有 this()方法或者super()方法,如果没有的话那默认就是super(),隐藏了看不到
this()方法用来调用其他有参函数的构造方法
super()方法用来调用父类的指定构造方法
.
10.java一个类中只能有一个 public类
java程序是从一个public类的main函数开始执行的,就像C程序是从main()函数开始执行一样。
11.Java中单引号和双引号的区别?
区别1:java中的单引号表示字符,java中的双引号是字符串。
区别2:单引号引的数据一般是char类型的;双引号引的数据 是String类型的。
12.
final修饰的类无法被继承
final 修饰的方法是不能被重写
语法:public final class A { }
final 修饰的局部变量,一旦赋值,就不能重新赋值(只能赋一次值)不管是什么变量都是(实例变量,局部变量,类变量,通通都是)
final 修饰的变量,定义的时候必须赋值(也可以在构造方法中赋值)
13.抽象类
14.抽象类都是用来被子类继承的
有 abstract 修饰的类是不能创建对象的
final 和 abstract 是不能联合使用的,因为 final 修饰的类,是不能被继承的
抽象类虽然不能实例化,但是有构造方法,这个构造方法是供子类使用的
15.
16.抽象类中可以包含抽象方法和非抽象方法,但是非抽象类中就不能包含抽象方法了
17.
这段代码也是有问题的,非抽象类中不能包含抽象方法,但是它这个是把抽象方法给继承过来了
解决方法就是 重写
18.多态一定要记住一句话:父类型引用指向子类对象
19.
Java中定义常量是 public static final int a = 10 ;
这么定义的
20.接口
在接口中,只包含两部分内容,一部分是 :常量,另一部分是 :抽象方法 。 接口中没有其他类型的内容
接口中的方法都是抽象方法,所以定义开头都是 public abstract int sum(int a ,int b ); 所以在接口中定义方法可以省略前面的 public abstract
接口中的常量的定义,开头都是 public static final int x = 10 ; 所以 在接口中定义变量也可以直接省略 public static final
21.类和类之间叫做继承,类和接口(完全抽象类)之间相互的关系叫做实现
22.子类(非抽象类)继承接口的时候,需要对子类中的方法进行重写,并且需要注意 子类中方法的名称,在接口中可以省略 public ,但是在子类的方法名中是不能省略的
23.接口中虽然不能实例化对象,但是可以使用多态(父类型引用指向子类对象)
比如说接口A,
子类A实现接口B,可以在接口A中 这么写 A a = new B();
24.
原文:https://www.cnblogs.com/sdgfsdgfsd/p/14730376.html