类与对象:类与继承
1. 类与继承
类 class:
类只有在需要的时候才会被加载,只会加载一次
类在加载时,会初始化静态static变量,会执行static包括的块
类在实例化对象时,先会初始化变量,再接着执行构造函数
继承 extends:
java是单继承的,子类只可以显式的继承一个父类
子类继承父类的变量:
子类可以继承父类的public,protected,不能继承private
super关键字:
当前对象的父类的引用。
通过super可以访问父类的public,protected变量和成员方法,是访问不到private的
this关键字
public class Person { String name; public void tallk(String name) { System.out.println(this.name);//表示当前对象的name 指向对象自己的引用 } public String getName() { return name; } public void setName(String name) { this.name = name; 通过对象关键字访问对象的属性 } } public class MainTest { public static void main(String[] args) { Person p1=new Person(); p1.setName("yyy"); p1.tallk("ZZZ"); } }
public class Hello { private String name; private Integer number; public Hello(String name){ this.name=name; } public Hello(String name,Integer number){ this(name); 通过this来调用其他的构造函数 this.number=number; } public void print() { System.out.println("name="+name+" number="+number.toString()); } } public class MainTest { public static void main(String[] args) { Hello hello=new Hello("yy", 2); hello.print(); } }
public class Apple { Apple getPeeled(){ return Peeler.peel(this); 为了将其自身传递给外部方法,必须使用this关键字 } } public class Peeler { public static Apple peel(Apple apple){ return apple; } } public class Person { public void eat(Apple apple){ Apple peeeled=apple.getPeeled(); System.out.println("yuyumin"); } } public class MainTest { public static void main(String[] args) { new Person().eat(new Apple()); } }
Apple需要调用Peeler.peel()方法,他是一个外部的工具方法,将执行由于某种原因而必须放在Apple外部的操作(也许是因为该外部方法要应用于许多不同的类,而你却不想重复这些代码)
分析:设想一个场景,假如各种水果去皮的工作都是一样的,只要给我水果,我都按同样的方法去皮。那么结合上面的例子,传进来一个水果,我们吃之前getPeeled(),
必须将此水果作为参数传递给外部的peel(),用this来代表自身传递给外部方法。
参考:https://www.cnblogs.com/yefengyu/p/4821582.html
final关键字
final声明类,即类不能被继承,最终类,被声明为final类的方法被自动声明为final
final声明变量,变量不能被修改
final声明方法,方法不能被重写
构造器:
子类不继承父类的构造器,只是隐式或显式的去调用。
对于无参的父类构造器,子类在实例化时会自动调用,而对于有参的需要super去显式调用
重写override与重载overload
父类的private方法对于子类来说是隐藏的,子类不能重写也不能重载
可以用super来调用父类中被覆盖的方法。
private,protected,public,default(缺省)
对于缺省的变量或方法,可以在定义类,同包的类或子类中使用
java类的加载,初始化:
https://www.cnblogs.com/yahokuma/p/3668138.html
https://blog.csdn.net/u013349237/article/details/71076617
java类加载器:
https://blog.csdn.net/javazejian/article/details/73413292
https://blog.csdn.net/javazejian/article/details/70768369
参考:

浙公网安备 33010602011771号