IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【深入学习】封装、继承和多态 -> 正文阅读

[Java知识库]【深入学习】封装、继承和多态

对象的创建和构造方法:

构造方法:

1.构造方法没有返回值,

2.使用new的时候自动使用构造方法

3.创建对象时自动调用

4.如果定义了构造方法,java不再赠送无参构造方法。

语法:创建对象:xxx? x=new xxx();

this关键字:

表示当前类的对象(接收对象),在调用方法时,java会自动把对象传递给方法在方法中接收对象,this可以帮助区分成员变量和局部变量。

方法的查找顺序:先找自己的方法内,没有就去this里面找,this可以在内部获得对象的属性信息。

setter and getter:

格式:

public void setName(参数){}this.name=name;}??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? public?? void getName(){

return this.name;}???????????????????

封装:

封装的概念:

将数据和操作数据的方法进行有机结合,隐藏对象的属性(成员变量)和实现细节,仅对外公开接口来和对象进行交互。

封装的意义;

对不想对外公开的数据和方法进行私有化(private),对外实现一个公开的方法可以访问私有的属性,简单来说就是把不想外人看到的内容包起来,例如计算机靠cpu、显卡等软硬件运行,但用户只看得到显示器运行的结果,看不到运行的实际情况。

各个访问权限符的作用范围如下表:

private(保护成员变量被胡乱赋值)。

如何使用封装:

一般会将成员变量用private修饰,成员方法会用public来修饰。但是在具体使用中还是要看该类中的成员变量要给什么类进行使用,如果是子类(在后面继承中有什么是子类),就用protected;如果该成员变量需要给所有类都要访问,就设置为public;只有合适地使用修饰符,成员才能有好的封装性。

封装的实例:

char c=new char();

继承:

继承就是指子类继承父类的属性,并在其基础上添加的过程。

继承的一般格式:publi 子类名 extends 父类名{

有参构造时使用super关键字表示父类的内容}

继承的意义和作用:1.私有内容是不能继承的?? 2.作用:简化代码开发

多态:多态性是对象多种表现形式的体现。

例如人类是一个大类,你和我是其中一个对象,但你和我并不是完全一样存在着一定的差异。

多态的前提和实现:1.存在继承/实现的关系?????????????????????????????

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 2.有方法重写??????????????????????????????

???????????????????????????????? 3.由父类指向子类 例如 Animal? a=new Cat();?????????????????????????

???????????????????????????????? 4.编译看左边,执行看左边,成员方法编译看左边,执行看右边;

多态的好处和弊端:

好处;提升程序的延展性?????????????????????????????????

弊端:无法访问子类特有的方法

多态的转型:

向上转型:从子到父,父类引用指向子类对象

例如:Animal a=new Cat();

向下转型:Cat c=(Cat)a;

instanceof关键字:

语法:xx instanceof 类??

作用:判断对象是不是某个类的实例。

注意:只有非静态的方法和属性才具有多态的性质,静态方法和静态的属性不涉及重写,所以没有多态。

运用三大特征的例子:

package duotai;
//父类

public class GeometricObject {
    private String color;
    private int weight;

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
    public GeometricObject(String color,int weight){
        this.color=color;
        this.weight=weight;
    }
    public static void findArea(){

    }


}
//子类

package duotai;

public class Circle extends GeometricObject {
    private double radius;
    public Circle(String color, int weight,double radius) {
        super(color, weight);
        this.radius=radius;
    }

    public Circle(String color, int weight) {
        super(color, weight);
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
    public static double findArea(double radius){
        double area = Math.PI * radius * radius;
        return area;

    }
}
//测试类
package duotai;

public class GeometricTest {
    public static void main(String[] args) {
        GeometricObject a=new Circle("red",150);
        GeometricObject b=new MyRectangle("blue",250);
        Circle c = (Circle) a;
        MyRectangle myRectangle = (MyRectangle) b;
        double area1 =  c.findArea(10);
        double area2 =  myRectangle.findArea(4,6);
        equalsArea(area1,area2);
        displayGeometricObject(area1,area2);


    }
    public static void equalsArea(double area1,double Area2){


        if (area1==Area2){
            System.out.println("两个图形面积相等");

        }else{
            System.out.println("两个图形面积不等。");
        }

    }
    public static void displayGeometricObject(double area1,double Area2){

        System.out.println("矩形的面积是:"+Area2+"  圆形的面积是:"+area1);


    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-31 23:49:43  更:2022-03-31 23:50:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码