对象的概念
所谓的对象其实就是通过java类所产生的实体。
例如:盖楼房的图纸就是Java类,根据这个图纸修建起来的能够被看见,被使用的这个实际存在的楼房,就是相当于是用过这个图纸得到的对象。
Java类实际是一个抽象意义上的概念,对象就是通过这个java类的抽象概念具体化之后的一个具体概念。
四大作用域
public 公开的 可以被继承
protected 本类和子类和同包的都可以访问
default(默认) 在当前的包下可以访问
private 私有的方法
面向对象的三大特征
封装
类的属性私有化
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
封装之后外界不能直接访问我们认为重要的信息,需要使用我们提供的get和set方法来获取,如果对get或者set方法加入判断就可以确保数据的安全性。
继承extends
一个类可以有一个父类,继承了父类的所有public的属性和方法
注意:子类可以直接访问父类的非私有的属性和方法。
子类无法继承父类中的私有的内容
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.pojo;
public class B extends D {
public static void main(String[] args) {
D b = new B();
int age = b.age;
String loc = b.loc;
String name = b.name;
b.m();
}
}
class D {
//私有的属性,父类无法继承
private int id = 1;
public String name = "张三";
protected int age = 15;
String loc = "shanghai";
public void m() {
System.out.println("fulei");
}
}
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态发生的在继承的前提下才可以发生,当一个类被多个类继承的时候,我们可以把子类赋值给父类,但是需要注意的是:
1.如果子类赋值给父类对象,子类独有的方法就无法直接调用,需要类型转换
2.当子类赋值给父类的时候,在编译的时候默认调用的是父类的方法,但是执行时执行的是子类重写(@override)的方法;
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.pojo;
public class B extends D {
@Override
public void m() {
System.out.println("b");
}
public void a() {
System.out.println("a");
}
public static void main(String[] args) {
//子类可以赋值给父类
D b = new B();
//实例化后调用的实际上是子类重写父类的方法
b.m();
//子类赋值给父类,子类独有的方法无法直接使用,需要类型转换
((B)b).a();
D e = new E();
e.m();
}
}
class E extends D {
@Override
public void m() {
System.out.println("d");
}
}
class D {
private int id = 1;
public String name = "张三";
protected int age = 15;
String loc = "shanghai";
public void m() {
System.out.println("fulei");
}
}