Java基础语法(10)-面向对象之三大特征

2023-06-12,,

title: Java基础语法(9)-面向对象之类的成员

blog: CSDN

data: Java学习路线及视频

1.面向对象特征--封装

    为什么需要封装?封装的作用和含义?

我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动机吗?

我要开车,…

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

    信息的封装和隐藏

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:

getXxx()和setXxx()实现对该属性的操作

class Animal {
private int legs; // 将属性legs定义为private,只能被Animal类内部访问
public void setLegs(int i) {
if (i != 0 && i != 2 && i != 4) {
System.out.println("Wrong number of legs!");
return;
}
legs = i;
}
public int getLegs() {
return legs;
}
}
public class Zoo {
public static void main(String args[]) {
Animal xb = new Animal();
xb.setLegs(4); //
System.out.println(xb.getLegs());
}
}
    四种访问权限修饰符

Java权限修饰符public、protected、(缺省)、private置于类的成员定义前,用来限定对象对该类成员的访问权限。

修饰符 类内部 同一个包 不同包的子类 同一个工程
private Yes
(缺省) Yes Yes
protected Yes Yes Yes
public Yes Yes Yes Yes

对于class的权限修饰只可以用public和default(缺省)。

public类可以在任意地方被访问

default类只可以被同一个包内部的类访问

2.面向对象特征--继承

    为什么要有继承?

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

此处的多个类称为子类(派生类),单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”

    类继承语法规则:

class Subclass extends SuperClass{ }

    作用:

继承的出现减少了代码的冗余,提高代码的复用性
继承的出现,更有利于功能的扩展
继承的出现让类与类之间产生了关系,提供了多态的前提。

    规则:

Java只支持单继承和多层继承,不允许多重继承
一个子类只能有一个父类
一个父类可以派生出多个子类

    单继承与多层继承举例

3.面向对象特征-多态性

    多态的作用

父类的引用指向子类的对象

    规则

编译时,看左边;运行时,看右边。

    向上转型

在Java中,子类的对象可以替代父类的对象使用

Person p = new Student();
Object o = new Person(); //Object类型的变量o,指向Person类型的对象
o = new Student(); //Object类型的变量o,指向Student类型的对象

子类可看做是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型(upcasting)。

    动态绑定

编译时e为Person类型,而方法的调用是在运行时确定的,所以调用的是Student类的getInfo()方法

public class Test {
public void method(Person e) {
e.getInfo();
}
public static void main(Stirng args[]) {
Person e = new Person();
e.getInfo();
}
    instanceof关键字

作用:用来判断某个对象是否属于某种数据类型。

注意: 返回类型为布尔类型

	   Fu f1=new Zi();
Fu f2=new Son();
if(f1 instanceof Zi){
System.out.println("f1是Zi的类型");
}
else{
System.out.println("f1是Son的类型");
}
    向下转型

一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型
子类类型 变量名=(子类类型) 父类类型的变量;

public class Main {
public static void main(String[] args) {
Person person = new Superman();
Superman s = (Superman)person; //向下转型
s.sleep();
s.fly();
s.eat();
}
}

4.结语

2020-3-31: Java基础语法(8)-数组中的常见排序算法

2020-3-31: Java基础语法(9)-面向对象之类的成员

今日好文推荐

一文带你入门Java Stream流,太强了
学历低,无法胜任工作,大佬告诉你应该怎么做

今日资料推荐

我的Java自学之路

Java基础语法(10)-面向对象之三大特征的相关教程结束。

《Java基础语法(10)-面向对象之三大特征.doc》

下载本文的Word格式文档,以方便收藏与打印。