封装

基本介绍

  • 该露的露,该藏的藏,我们的程序设计要追求“高内聚,低耦合”:

    • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
    • 低耦合:仅暴露少量的方法给外部使用
  • 封装(数据的隐藏):通常禁止直接访问一个对象中数据的实际表示,而因通过操作接口来访问,这称为信息隐藏
  • 属性私有,get/set
  • 为什么要使用封装:
    • 提高程序的安全性,保护数据
    • 隐藏代码的实现细节
    • 统一接口
    • 系统可维护增强
  • 方法的重载:如println()方法,按住Ctrl,然后鼠标点击该方法则可以查看具体内容

运用实例

FengZhuang.java

public class FengZhuang {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setName("李同洲");
System.out.println(stu1.getName()); stu1.setAge(999);//岁数不合法,我们可以在Student类中的setAge()中对age进行约束
System.out.println(stu1.getAge());
}
}

Student.java

//Student类  private:私有
public class Student {
//私有属性
private String name;//名字
private int id;//学号
private char sex;//性别
private int age; //提供一些可以操作这些私有属性的方法
//提供一些public的get和set方法 //get 获得这个数据
public String getName() {
return name;
} public int getId() {
return id;
} public char getSex() {
return sex;
}
//set 给这个数据设置值
public void setName(String name) {
this.name = name;
} public void setId(int id) {
this.id = id;
} public void setSex(char sex) {
this.sex = sex;
} public void setAge(int age) {
if (age>0&&age<120){
this.age = age;
}else{
this.age=3;
}
} public int getAge() {
return age;
}
//学习() //睡觉()
}

继承

基本介绍

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
  • extands的意思是“扩展”,子类是父类的扩展
  • Java中类只有单继承,没有多继承
  • 继承是类与类之间的一种关系。除此之外,类与类之间还存在依赖、组合、聚合等关系
  • 继承关系的两个类,一个是子类(派生类),一个是父类(基类)。子类继承父类,使用extands来表示
  • 子类和父类之间,从意义上讲应该具有“is a”的关系
  • super注意点:
    • super调用父类的构造方法,必须在构造方法的第一个
    • super只能出现在子类或者构造方法中
    • super和this不能同时调用构造方法
  • this
    • 代表的对象不同:this本身调用着这个对象;super:代表父类对象的应用
    • 前提:this没有继承也可以使用;super只能在继承条件中使用
    • 构造方法:this本类的构造;super父类的构造
  • 方法重写:需要有继承关系,子类重写父类方法
    • 方法名必须相同
    • 参数列表必须相同
    • 修饰符:范围可以扩大但是不可以缩小 (public>protected>default>private)
    • 抛出的异常:范围可以缩小但是不可以扩大 (ClassNotFindException<Exception)
  • 重写子类的方法必须和父类的方法一致;方法体不同
  • 为什么要重写?(父类的功能子类不一定需要,或者不一定满足!)

运用实例

Test:JiCheng.java

public class JiCheng {
public static void main(String[] args) {
WoMen nv1=new WoMen();
System.out.println(nv1.money);
nv1.say();
System.out.println(nv1.getXing());
nv1.setXing("洲");
System.out.println(nv1.getXing()); //super
Man nan1=new Man();
nan1.text("li");
nan1.text2(); //静态方法
//方法的调用之和左边有关,定义的数据类型有关
B b=new B();
b.text();//B-->text()
A a=new B();
a.text();//A-->text() //方法的重写(Override重写)
//非静态方法(非静态方法和静态方法是有很大的区别的)
B c=new B();
c.text();//B-->text()
//父类的引用指向了子类
A d=new B();//子类重写的父类的方法
d.text();//B-->text()
}
}

父类:Person.java

//在Java中,所有的类,都默认直接或者间接继承Object类
//父类
public class Person /*extends Object(可省略)*/ {
//public
//protected
//default
//private public Person() {
System.out.println("Person无参");
} /*public Person(String m) {
System.out.println("Person有参");
}*/ public int money=10_0000_0000;//如果属性为private则不能直接继承给子类 private String xing="李";//如果属性为private,需要通过get/set方法来获取数据,然后把get/set方法继承给子类 public void say(){
System.out.println("说话");
} public String getXing() {
return xing;
} public void setXing(String xing) {
this.xing = xing;
} //super
public String name="litongzhou";
public void print(){
System.out.println("Person");
}
}

子类:WoMen.java

//女人 is 人:派生类 is 基类
//子类继承父类,就拥有父类的全部方法!
public class WoMen extends Person{
//Ctrl+h
}

子类:Man.java

public class Man extends Person {

    //隐藏代码:调用了父类的无参构造
public Man() {
super();//调用父类的构造器,必须在子类构造器的的第一行
System.out.println("Man无参");
} /*public Man() {
super("m");
System.out.println("Man有参");
}*/ //super
private String name="李同洲";
public void text(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
} public void print(){
System.out.println("Man");
} public void text2(){
print();
this.print();
super.print();
}
}

父类:A.java

public class A {
//重写都是方法的重写,和属性无关
public void text(){
System.out.println("A-->text()");
}
}

子类:B.java

public class B extends A{
//Override重写
@Override //注解:有概念的注解
public void text() {
System.out.println("B-->text()");
}
}

面向对象2(Java)的更多相关文章

  1. 面向对象编程 —— java实现函数求导

    文章目录 ★引子 ★求导 ★最初的想法 ★初步的想法 ★后来的想法 ★最后的想法 ★编程范式 ★结尾 首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科 ...

  2. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  3. 201771010134杨其菊《面向对象程序设计java》第十周学习总结

    第8章泛型程序设计学习总结 第一部分:理论知识 主要内容:   什么是泛型程序设计                   泛型类的声明及实例化的方法               泛型方法的定义      ...

  4. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  5. 201771010134杨其菊《面向对象程序设计java》第八周学习总结

    第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类:  Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...

  6. 面向对象的Java实现

    1.面向对象的Java实现--封装 1-1:封装 a.为什么需要封装(封装可以是数据方便维护.增加实用性.方便扩展等等.通过面向对象的思想,模拟现实生活中的事物.) b.什么是封装(封装就是将属性私有 ...

  7. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  8. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  9. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  10. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

随机推荐

  1. 一加5T刷入魔趣

    0.准备工作 1.安装adb工具 2.下载twrp 3.5t系统包. 1.解锁bootloader 先进入原版系统,打开开发者选项,允许USB调试,勾选允许OEM解锁,高级重启选项 打开命令行输入: ...

  2. print语法

    循环体 是 缩进的 :缩进是 Python 组织语句的方式.在交互式命令行里,得为每个缩输入制表符或空格.使用文本编辑器可以实现更复杂的输入方式:所有像样的文本编辑器都支持自动缩进.交互式输入复合语句 ...

  3. Django ImageField 内置属性height,width和size

    ImageField实例使用height,width和size属性后,若后继操作需重新打开实例,其他模块方法才能调用实例,使用open()方法:>>> from PIL import ...

  4. tomcat前后端项目部署及调优

    第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...

  5. db2入门必看命令清单--日常运维必需

    关注 推荐 嘉兴 视频 财经 科技 热点 国际 更多   搜索 34 消息 发布     5   2   收藏 分享 db2入门必看命令清单--日常运维必需 https://www.toutiao.c ...

  6. UI设计圈年终福利,错过一次等一年!

    年底了,小摹发现各种大数据年终报告接踵而至.但真相是,某博不知道和你互动最多的是个机器人,某Q不知道听歌最久那天只是忘了关APP.大数据不懂你,但是摹客懂你! 设计萌新更希望大佬能在线帮忙改稿. 5年 ...

  7. 火爆全球的“饺子皮”3D手办原来是这样做的!关键时刻少不了远程控制软件!

    2022年卡塔尔世界杯的吉祥物最近在全球火出圈了,并且喜提中国网友给予的爱称"饺子皮"."馄饨皮"(官方名字:拉伊卜,意为"技艺高超的球员" ...

  8. nginx文件上传模块 nginx_upload_module

    1.编译安装nginx wget https://github.com/fdintino/nginx-upload-module/archive/refs/heads/master.zip PS:原先 ...

  9. No.1.2

    列表标签 无序列表 标签名 说明 ul 表示无序列表的整体,用于包裹li标签 li 表示无序列表的每一项,用于包含每一行的内容 有序列表 标签名 说明 ol 表示有序列表的整体,用于包裹li标签 li ...

  10. Java基础之注释

    注释 在Java的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,可以是编程思路或者是程序的作用. 注释不会被执行,是给写代码的人看的. 书写注释是一个非常好的习惯 ...