首页 > 其他 > 详细

第21天学习打卡

时间:2021-01-29 16:38:50      阅读:37      评论:0      收藏:0      [点我收藏+]

封装

该露的露,该藏的藏

我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

封装(数据的隐藏)

通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

属性私有,get/set

 package com.oop.demo04;
 //类 private :私有
 public class Student {
     //属性私有
 ?
     private String name;//名字
     private int id;//学号
     private char sex;//性别
     private  int age;//年龄
     //名字 学号 性别 年龄:为属性
     //提供一些可以操作这个属性的方法
     //提供一些public的get,set方法
     //get 获得这个数据
     public String getName(){
         return  this.name;
    }
 ?
     //set给这个数据设置值
     public void setName(String name){
         this.name = name;
    }
     //alt +insert 可以生存get或者set方法
 ?
     public void setId(int id) {
         this.id = id;
    }
 ?
     public void setSex(char sex) {
         this.sex = sex;
    }
 ?
     public void setAge(int age) {
         if(age > 120 || age < 0){//不合法
             this.age = 3;
        }else{
             this.age = age;
        }
 ?
    }
 ?
     public int getId() {
         return id;
    }
 ?
     public char getSex() {
         return sex;
    }
 ?
     public int getAge() {
         return age;
    }
     //学习() 睡觉():属于方法
     //学习()
     //睡觉()
 }
 ?
 package com.oop;
 ?
 ?
 import com.oop.demo04.Student;
 /*
 1.提高程序安全性,保护数据
 2.隐藏代码的实现细节
 3.统一接口
 4.系统可维护增加了
 ?
  */
 public class Application {
     public static void main(String[] args) {
          Student s1 = new Student();
          s1.setName("doudou");
          //方法相同,方法名一定相同,参数列表相同
         System.out.println(s1.getName());
         s1.setAge(50);//不合法
         System.out.println(s1.getAge());
 ?
 ?
 ?
 ?
 ?
    }
 }

 

 

继承

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。

extends的意思是“扩展”。子类是父类的扩展。

Java中类只有单继承,没有多继承!

继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。

子类和父类之间,从意义上讲应该具有"is a"的关系

object类

super

方法重写

快捷键 ctrl +H:在类里面点击这个快捷键 :可以打开一个继承树。

 package com.oop.demo05;
 //Person 人:父类
 public class Person {
     //public公共的
     //protected受保护的
     //private私有的
     //default默认的
 ?
     public int money = 10_0000_0000;
     public  void say(){
         System.out.println("说了一句话");
    }
 ?
 ?
 }
 ?

 

 package com.oop.demo05;
 //学生 is 人:派生类,子类
 //子类继承了父类,就会拥有父类的全部方法
 public class Student extends  Person {
 }
 ?

 

 

 package com.oop.demo05;
 //Teacher is 人:派生类,子类
 public class Teacher extends  Person {
 }
 ?

 

 

 package com.oop;
 ?
 ?
 import com.oop.demo05.Student;
 ?
 public class Application {
     public static void main(String[] args) {
        Student student = new Student();
        student.say();
         System.out.println(student.money);
 ?
 ?
 ?
 ?
 ?
    }
 }

私有的东西无法被继承

 

#####

 

 //在JAVA中,所有的类,都默认直接或者间接继承Object
 package com.oop.demo05;
 //在JAVA中,所有的类,都默认直接或者间接继承Object
 //Person 人:父类
 public class Person {
     protected String name = "kuangshen";
     //私有的东西无法被继承
     public Person(){
         System.out.println("Person 无参执行的");
 ?
    }
 ?
 ?
 ?
     public void print(){
 ?
         System.out.println("Person");
    }
 ?
 ?
 ?
 }
 ?
 package com.oop.demo05;
 //学生 is 人:派生类,子类
 //子类继承了父类,就会拥有父类的全部方法
 public class Student extends  Person {
     public Student(){
         //隐藏代码:调用了父类的无参构造
         super();//调用父类的构造器,必须要放在子类构造器的第一行
         System.out.println("Student无参执行的");
 ?
    }
 ?
     private String name = "qinjiang";
     public void print(){
         System.out.println("Student");
    }
 ?
 ?
 ?
     public void test1(){
         print();//输出:Student
         this.print();//输出:Student
         super.print();//Person
 ?
    }
     public void test(String name){
         System.out.println(name);//输出:秦疆
         System.out.println(this.name);//输出:qinjiang
         System.out.println(super.name);//输出:kuanghshen
    }
 ?
 }
 ?
 package com.oop;
 ?
 ?
 import com.oop.demo05.Person;
 import com.oop.demo05.Student;
 ?
 ?
 public class Application {
     public static void main(String[] args) {
         Student student = new Student();
        // student.test("秦疆");
 ?
        // student.test1();
 ?
 ?
 ?
 ?
 ?
 ?
    }
 }

快捷键 ctrl +F可以查找你需要的关键字

 super注意点:
       1.super调用父类的构造方法,必须在构造方法的第一个
       2.super必须只能出现在子类的方法或者构造方法中。
       3.super和this 不能同时调用构造方法!
 ?
  VS this:
       代表的对象不同:
       this:本身调用者这个对象
       super:代表父类对象的引用
      前提:
        this:没有继承也可以使用
        super:只能在继承条件下才能使用
       构造方法
         this():本类的构造
         super():父类的构造

 

第21天学习打卡

原文:https://www.cnblogs.com/doudoutj/p/14345274.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!