面向对象的本质:以类的方式组织代码,以对象的组织(封装)数据。
三大特性:封装,继承,多态。
类与对象的关系:类是对象的模板
类创建
public class Demo01 {
String name;//类属性
//类方法
public void study(){
System.out.println("OK!");
}
}
对象的创建
public static void main(String[] args) {
//类实例化后会返回自己的一个对象
//demo01就是Demo01类的具体实例
//创建demo01实例化Demo01类
Demo01 demo01 = new Demo01();
}
一个类即使为空,也会存在一个无参数构造方法
public class Demo01 {
//无参数构造方法
public Demo01() {
}
String name;//类属性
//类方法
public void study(){
System.out.println("OK!");
}
}
new关键字本质为调用构造器
一旦定义了有参数构造方法,无参就必须显示定义
alt+insert生成构造器
特点:
高内聚,低耦合
属性私有(private)其他类无法调用;若要调用需要通过get/set方法进行调用
作用:
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口
提高系统的可维护性
private String name;
private int id;
//get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
定义
//子类Students继承父类Person
public class Student extends Person{
//属性私有
private int grade;
//get set 方法
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
关键字:extends(扩展,子类是父类的扩展)
特点:
所有类都继承自Object类
java只有单继承,没有多继承(只能有一个父类)
子类拥有父类的全部方法和属性(前提是public方法和属性)
private无法继承
java中所有的类间接或直接继承自object类
final修饰后不能继承
ctrl+H:调出继承族谱
作用:
//父类
public class Person {
protected String name = "Person";//若修饰为private,则super也无法调用
private int age;
}
//子类
public class Student extends Person{
private String name="Student";
private int grade;
public void test(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
//main
public class Application {
public static void main(String[] args) {
String name="main";
Student student = new Student();
student.test(name);
}
}
//输出
main
Student
Person
特点:
定义
//父类
public class Person {
public static void test1(){
System.out.println("Person");
}
}
//子类
public class Student extends Person{
//子类重写了父类的test1()方法
public static void test1(){
System.out.println("Student");
}
}
特点:
作用
特点:
存在条件:
public class Application {
public static void main(String[] args) {
//子类引用指向子类对象
Student student = new Student();
//父类引用指向子类对象;不能调用子类独有的方法(多态)
Person student1 = new Student();
Object student2 = new Student();
}
}
A instanceof B ;
//类关系
//Objec》D
//Objec》B》c
//Objec》B》A
Object Objec= new A();
System.out.println(Object instanceof A);//True
System.out.println(Object instanceof B);//True B被A继承
System.out.println(Object instanceof Objec);//True Objec被A间接继承
System.out.println(Object instanceof C);//C和A无间接或直接继承关系
System.out.println(Object instanceof D);//D和A无间接或直接继承关系
B b= new A();
System.out.println(B instanceof D);//编译报错 B和D无间接或直接继承关系
父类的引用指向子类的对象
//向下强制转型(父类转子类)
//Objec》B》A
B a = new A();
B b = (A)a;
//向上自动转型(子类转父类)--可能丢失子类自己本来的方法
A a = new A();
B b = a;
特点
静态导入包:import static,可以直接导入方法或者属性
静态代码块:static{},用来赋予初始值
原文:https://www.cnblogs.com/mr0fly/p/14143282.html