局部变量和成员变量:
一:
JAVA同一个包下,不同java文件中的类可以直接引用,不需要import,可以这样一个java文件类里写mian函数,其他JAVA文件类写功能类
二:
JAVA一个文件一个类
三:
JAVA 构造方法可以有多个(传入的变量数目、变量顺序、变量类型要不同),类中同名方法也可以有多个(传入的变量数目、变量顺序、变量类型要不同)即 方法的重载,如果重写父类方法(与父类方法同名且传入参数和返回值都相同)即为方法的重构
四:JVM中的堆区、栈区、方法区
五:方法重载
六:this
this代表的对象不同,因为相同一个类每创建一个对象,所创建的对象都不同。
七:
八:封装
九:static关键字
类似于定义python中的类属性、类方法
十:单例设计模式
关键所在是把构造方法进行私有化,导致无法按正常步骤在外界创建实例,只能在类中创建实例,进而类.实例 都为同一个实例。
十一:继承
十二:super关键字和this关键字的比较
十三:方法的重写
十四:final关键字
十五:对象的创建过程
案例
十六:多态
十七:引用类型之间的转换
注意:编译通过并不代表能运行成功!!!!!!!!!!!!!!!!!!!!
强制类型转换的意义:原本父类引用p指向子类对象s(向上转换),这时候形成多态,但是p无法使用父类中没有的方法,只能使用父类方法和被子类重写的方法,这时候想用p去使用子类中的独有方法时就得将p强制类型转换成子类,用instanceof判断p实际指向哪个对象,因为p指向s对象,所以p能强制类型转换成s从而父类引用p能使用子类对象s中的方法
instanceof运算符
十八:多态意义实例
父类去接收不同的子类实例,执行时根据传入的子类去调用不同内容的继承方法。
如:父类为A,有方法A()
子类a,继承父类方法A()
子类aa,继承父类方法A()
父类作为方法的参数如 draw(A 形参){
形参.A()//执行时根据传入的子类不同,而执行具体的A()方法,从而实现一个类型,不同的形态方法
}
这样写一方法就能接收多个对象,方便使用减少冗余!!!!!
子类如果只有两三个还好,如果子类有成千上百个的话,如果要执行每个子类中同一个从父类继承并重写了的方法A的话,就得依次实例化子类再调用各自方法。如果使用多态的话,只需要写一个方法,方法的参数列表中为所有子类的父类,调用这个方法传入不同子类实例为方法参数,实现向上转型,在调用
方法A的时候就会根据具体传入的实例去执行该实例的这个方法A,就不要写很多的子类实例.A()的语句了。
十九:抽象类
抽象类练习:
抽象类Account:
package Day12;
public abstract class Account {
private int money;
public Account() {
}
public Account(int Money){
this.setMoney(Money);
}
public void setMoney(int money) {
this.money = money;
}
public int getMoney() {
return money;
}
public abstract double sum_Interest();
}
继承自抽象类的子类:
package Day12;
public class FixedAccount extends Account {
public FixedAccount() {
super();
}
public FixedAccount(int money) {
super(money);
}
@Override
public double sum_Interest() {
double interest;
interest = super.getMoney() * 0.12;
return interest;
}
public void aaa(){
System.out.println("子类特有的方法");
}
}
测试main类:
package Day12;
public class TestFixedAccount {
public static void main(String[] args) {
Account acc = new FixedAccount(100);
double bbb = acc.sum_Interest();
System.out.println(bbb);
// 调用子类特有方法
Account acc2 = new FixedAccount();
/*强制类型转换*/
FixedAccount fixacc = (FixedAccount) acc2;
fixacc.aaa();
}
}
二十:接口
解决了JAVA的类没有多继承只有单继承的一些问题
例子:
Gold继承自两个接口:
接口一:
接口二:
测试类:
二十一:内部类
内部类可以形象的看成 学校里的食堂,食堂是学校这个类中的另一个类。为了更好的解决没有多继承的问题。
成员内部类:
局部内部类:
局部内部类只能在定义它的方法或代码块中使用。
匿名内部类:
外部类:
内部类是一个接口:
测试:
静态嵌套类: