Java面向对象的基本特征

Java面向对象的思想特征
封装
继承
多态
封装
为什么要封装
在我们的软件开发过程当中,我们定义的成员变量,或者成员方法,不想让外界访问,或想让外界间接的访问,我们就需要对成员变量或者成员方法进行封装;
在我们现实生活中我们也是有很多的事物是封装起来的,例如:电视机,我们普通人使用电视机只是需要看电视,电视能用即可,我们不需要了解他的内部构造,和执行流程等等;
private关键字
private:自己的,私有的
被private修饰的成员变量和成员方法,只能在本类中调用
如果想要在其他类中用想调用的话需要我们提供公共的访问方式
set、get方法
当我们想要从其他类调用被private修饰的成员变量时我们需要用药set、get方法
set方法对成员变量进行赋值
get方法获取成员变量
代码示例
public class Person {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}

}

继承
关键字:extends:继承扩展
作用:
使类与类产生关系(字符类的关系)
提高代码的复用性
是多态的前提
为什么要使用继承
如果多个类里面有很多相同的代码,如果类与类之间没有任何关系,相同的代码我们需要编写很多遍;
没有继承之前代码示例:
// Cat类
public class Cat {
String name;
int age;
String color;

public void eat() {
	System.out.println("吃饭");
}

}
//Dog类
public class Dog {
String name;
int age;
String color;
public void eat() {
System.out.println(“吃饭”);
}
}

有了继承以后,类与类直接产生了关系,一些相同的代码我们就可以抽取出来,让使用的类继承有这些方法的类,就可以使用这些方法了;
有了继承只有代码示例:
// Annimal类
public class Animal {
String name;
int age;

public void eat() {
	System.out.println("吃饭");
}

}

//Cat 类
public class Cat extends Animal {

}
// Dog 类
public class Dog extends Animal {

}

继承的好处
提高了代码的复用性
多态的前提
提高代码的可维护性
继承的坏处
提高了代码的耦合性(耦合性指的是类与类之间的关系强弱,相互影响的大小);
多态
多态的概述
多态:事物的多种状态
对象的多态性
同一个对象可能有不同的名称;同一个对象,有不同的引用指向它;
本质:同一个物体,有不同名称和描述;
Cat c = new Cat();正常情况
Annimal a = new Cat();父类引用指向子类对象;
类型的多态性
同一个类型,可能具有不同的子类实现。同一个类型引用,有不同的对象实现。
真实本质:同一个名字和描述,可以在不同场景下有不同的实现
Annimal a = new Cat();
Annimal b = new Dog();
多态的前提
要有子父类继承关系;
有方法重写;
父类引用指向子类对象;
多态情况访问成员变量的特点
编译看左边,运行看左边。
编译的时候,要看【=】左边引用的类型中,是否有该变量的定义,如果有就编译成功,如果没有就编译失败。
运行的时候,要看【=】左边所属类型中,真正如何给变量赋值的,获取到的是引用父类的赋值结果。
多态情况访问成员方法的特点
编译看左边,运行看右边
编译的时候,要看【=】左边所属的类型中,是否有该方法的定义,如果有,就编译成功,如果没有,就编译失败。
运行的时候,要看【=】右边对象所属类型中,是如何实现这个方法的,最终运行的是子类重写过的方法的实现。
多态情况访问静态方法特点
编译看左边,运行看左边
编译的时候,要看【=】左边的引用所属的类型中,是否有该方法的定义,如果有,就编译成功,如果没有,就编译失败。
运行的时候,要看【=】左边的引用所属类型中,如何实现该方法的,最终运行的是引用所属类型中该方法的实现。(方法属于类,和父类的方法不属于重写的关系)
向上向下转型
向上转型
使用子类的引用指向子类的对象(正常情况)
多态中,使用父类的引用,指向子类的对象(向上转型)
本质:缩小对象本身的访问范围,减少了访问权限(只能访问父类中定义的内容)
向下转型
概念:
让指向子类对象的父类引用,【恢复】成子类的引用。
格式
子类类型 引用名称 = (子类类型) 父类类型的引用;
SuperMan sm = (SuperMan)m;
本质
【恢复】子类类型原本的访问范围
多态的好处
提高代码的可扩展性
在方法参数的列表中,可以定义父类类型的引用,将来调用的时候,所有的子类类型的对象,都可以作为方法的实际参数。
本文为个人观点

发布了6 篇原创文章 · 获赞 3 · 访问量 52

猜你喜欢

转载自blog.csdn.net/weixin_43942518/article/details/103448366