ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习笔记—面向对象三大特征(封装、继承、多态)

2022-04-23 22:33:39  阅读:125  来源: 互联网

标签:Java name 子类 多态 key 父类 public 三大 String


封装

image
image

  • 封装实现三部曲
    image
    • 将属性进行类私有化(private)
    • 提供一个公共的(public)set方法,让外部方便对类内部进行赋值
    • 提供一个公共的(public)get方法,让外部对类内部的属性取值

  • Account.java
package com.test.encap;

public class Account {
    private String name;
    private double count;
    private String key;

    public String getName() {
        return name;
    }

    public Account() {
    }

    public Account(String name, double count, String key) {
        this.setName(name);
        this.setCount(count);
        this.setKey(key);
    }

    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 4){
            this.name = name;
        }else {
            System.out.println("输入名字长度错误,设定默认值");
            this.name = "defultName";
        }
    }

    public double getCount() {
        return count;
    }

    public void setCount(double count) {
        if (count > 20.0){
            this.count = count;
        }else {
            System.out.println("输入余额小于20,给出默认值21");
            this.count = 21.0;
        }

    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        if (key.length() == 6 ){
            this.key = key;
        }else {
            System.out.println("输入密码长度有误,设定默认值000000");
            this.key = "000000";
        }

    }

    public void showInfo(){
        System.out.println("name = " + name + " count = " + count);
    }

}


  • AccountTest.java
package com.test.encap;

public class AccountTest {
    public static void main(String[] args) {
        Account account = new Account();
        account.setKey("666666");
        account.setName("小明");
        account.setCount(23.0);
        account.showInfo();
    }

}

继承

  • 解决代码复用问题,将多个类存在相同的属性和方法是,可以从这些类中抽象出弗雷,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可
  • 继承原理图
    image
    image
    image
  • 1.子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供的公共的方法去访问
    1. 子类必须调用父类的构造器,完成父类的初始化
    1. 当创建子类对象是,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过
    1. 如果希望指定去调用父类的某个构造器,则显示的调用一下:super(参数列表)
    1. super在使用时,必须放在构造器的第一行(现有爸爸,再有儿子)
    1. super()和this()都只能放在构造器第一行,因此这两个方法不饿能共存在一个构造器中
    1. java所有类都是Object类的子类, Object是所有类的基类
    1. 父类构造器的嗲用不限于直接父类,将一直往上追溯直到Object类(顶级父类)
    1. 子类最多只能继承一个父类(指直接继承), 即java中是单继承机制。
    1. 不能滥用继承,子类和父类之间必须满足is-a的逻辑关系

继承的本质

image

标签:Java,name,子类,多态,key,父类,public,三大,String
来源: https://www.cnblogs.com/wiem/p/16182319.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有