激活IDEA
Help” -> “Edit Custom VM Options…”
输入
-javaagent:C:\Users\nrgh\jetbrains-agent.jar
重启软件
Help” -> “Register…”
选择License server方式,地址填入:http://fls.jetbrains-agent.com
再重启软件即可
1.继承
共性抽取
员工 :父类(基类,超类)
讲师,助教:子类(派生类)
特点:1)子类可以有父类的内容
2)子类可以有自己的内容
子类;public class Teacher extends Employee;
父类成员变量: super.成员变量名
继承中重写:
1.方法,参数都一样(覆盖,覆写),new谁谁优先;
2.子类返回值小于等于父类的返回值
java.lang.Object类是所有类的最高父类
3.子类权限大于等于父类权限
public>protected>()>private
@Override//测试是否重写
public void method(){
super.method();
//
//其他功能
}
子类构造方法先调用父类;super();//隐藏子类中,只能在构造方法中,只能在第一行
重载:方法一样参数不同
super
访问父类的成员,构造方法,和变量
this
访问本类的成员方法,
构造方法(this(123);),第一个,唯一一个
和成员变量
java 单继承,多级继承(间接父类),可以有兄弟类;
一个类只有一个父类
java.lang.Object(亚当)
2.抽象类
父类:图形(抽象方法)计算面积
类与抽象方法都要加abstract;一个抽象类可以没有抽象方法
不能直接调用,需要子类继承,覆盖抽象方法,创建子类对象进行使用
public abstract class Animal
{
public abstract void eat();
public void method(){
}
}
3.接口(公共的接口标准)
public interface 接口名称{
}
java7:
1.常量
2.抽象方法(固定 public abstract,可选择省略)
注:接口都可定义
public interface MyInterface {
public abstract void method();
public default void method1(){
};//默认方法
}
java8;
3.默认方法(解决接口升级问题),接口实现类可以直接调用,也可覆盖
4.静态方法 接口名称 .方法,不能对象调用
java9;
5.私有方法;解决重复问题,(默认和静态)
private (static)void method(){
}
接口使用:(实现所有的抽象方法)
1.类似继承,但一个类可以实现多个接口
2. 要实现全部的抽象方法,否则加abstract变成抽象类;
3.默认方法重复,实现类要重写
4.父类与接口,默认先用父类;继承>接口;
接口常量(成员变量)
public interface MyInterface {
public static final int NUM_OFF=100;//常量,大写,可省略前面三个,必须赋值
public abstract void method();
public default void method1(){
};
}
接口不能有构造方法和静态代码块
接口可以多继承;(默认方法重复,要重写,加default)
4.多态
extends继承和implement实现,是多态前提,对象的多态性
父类名称 对象名=new 子类名称();
接口名称 对象名=new 实现类名称();
成员方法:编译看左边,运行看右边
成员变量:编译运行都看←;
对象向上转型;(多态)---安全 小--大;
父类名称 对象名=new 子类名称();
向下转型:(只能原路返回)
子类名称 对象名=(子类名称)父类对象
public class Demo04 {
public static void main(String[] args) {
Fu fu=new Zi();
Zi zi=(Zi) fu; /***/
zi.meZi();
}
}
Animal instanceof Dog可用于判断
final 不变
1.修饰类
2.修饰方法
3.修饰局部变量
4.修饰成员变量
1)public final class 类名称{
}
不能有子类,必有父类;其中方法无法覆盖;
2)方法无法覆盖
abstract final矛盾,不能同时有
3)只能赋值一次
4)存在默认值,手动赋值
set不能用
public > potected > () >private
同一类 = = = = 我自己
同一包 NO 我邻居
不同包子类 NO NO 我儿子
不同包非子类 NO NO NO 陌生人
类包含类(内部类)
1.内用外,随意;外用内,要有内部对象;
外.内 名称=new 外().new 内();
2.重名
外.this.num
局部内部类(在方法中)
外部类: public ()
成员内部类:public > potected > () >private
局部内部类:啥都不写,(局部成员变量是有效 final,java8)
匿名内部类() 省掉实现接口;只能用一次
接口直接new {
//重写所有抽象方法
}//这是匿名内部类
类,接口 都可作为成员变量;