学习内容:

1.封装:

隐藏对象的属性和实现细节,仅对外公开接口(一般通过定义set get 方法来访问内部属性),常见的将方法封装在类中就是封装的一种体现。

2.private修饰词

private修饰词,私有化,被修饰的变量、方法只能在当前类内访问,无法被继承,方法只能在该类内使用,如果其他类要访问这些变量,就要在

当前类内提供访问的方法,这种做法也是封装的一种体现。

public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

3.this关键字

this关键字可以粗略的理解为当前的意思:

 public void setName(String name) {this.name = name;}

该方法需要一个实例化的Student对象来调用,this指的就是当前的调用对象,可以理解为 调用对象.name = 形参的name

局部变量与成员变量重名问题:

public void speak() {//int age = 20;//String name = "张三";System.out.println(this.name+this.age+this.sex);//局部变量与对象成员变量重名时://如果没有如上两个局部变量,则可以不加this,调用对象的对应的成员变量;//如果有局部变量,而不加this,会就近调用局部变量,如果加了this,则访问调用对象的对应成员变量
}

4.继承

指的是在一个现有的类的基础上再创建一个子类,子类继承父类的所有属性与方法,同时子类可以拥有自己独有的属性和方法

class Father{String lastname;double race;public void walk(){System.out.print("行走");}
}class Son extends Father{String firstname;public void run(){System.out.print("奔跑");}
}

多重继承:

一个子类只能直接拥有一个父类,但可以间接拥有另外一个父类

public class Animals { //父类
    String race;public void see() {System.out.println("看见");}
}public class Dog extends Animals{  //父类,同时也是Animals的子类
    String color;int yp;String sex;
}public class Hdog extends Dog{  //子类 是Dog的子类,同时也是Animals的子类
    String per;
}

继承问题:

父类中被private修饰的成员变量、方法无法被子类继承!

访问权限:子类重写的父类方法的访问权限只能是大于等于父类方法,例如父类中有一个方法是public,子类只能是public,修改为protected会报错,如果该方法是protected,子类重写时可以是protected也可以是public

5.super关键字

类似于this,super可以被粗略的被认为是当前的父级

public class Dog extends Animals{  String color;int yp;String sex;
}
public class Hdog extends Dog{  String per;public void test() {System.out.println(this.color); //调用当前类成员变量System.out.println(super.color);//super 调用父类成员变量;
    }
}

构造方法中:

public class Dog extends Animals{  //父类
    String color;int yp;String sex;public Dog(String color,int yp,String sex) {this.color = color;this.yp = yp;this.sex = sex;    }
}
public Hdog(String color,int yp,String sex,String per) {super(color,yp,sex);//方法重载,调用父类构造方法this.per =per;
}注意,由于此处的父类没有默认的无参构造方法,而子类会默认调用父类的无参构造方法,所以子类必须重写一个有参构造方法!

另外,只要子类被实例化,会默认先调用父类构造方法,在调用自身构造方法!

6.方法重写

子类会继承父类的方法,如果子类向利用该方法来提供不同的效果,就要重写该方法。

public class Dog extends Animals{  String color;int yp;String sex;public Dog(String color,int yp,String sex) {this.color = color;this.yp = yp;this.sex = sex;}public void sleep() {System.out.println("睡觉");}public static void spark() {System.out.println("狗叫");}
}    public class Hdog extends Dog{ String per;public Hdog(String color,int yp,String sex,String per) {super(color,yp,sex);this.per =per;}public void sleep() {System.out.println("躺着睡觉");//重写
    }public static void spark() {System.out.println("二哈叫");//隐藏,重写父类类方法
    }
}方法调用时,当Dog的对象调用sleep方法时,输出睡觉,而Hdog的对象调用sleep时输出躺着睡觉,同理,类方法的隐藏也是如此注意,子类“重写”父类类方法表面看起来是在重写,实际上是重新定义了一个方法名与父类方法名相同的类方法,只不过用各自的类、对象去调用类方法时会调用各自的类方法,可以理解为子类屏蔽了继承自父类的类方法。注意,子类继承的方法在重写时,其修饰词权限要大于等于父类方法修饰词作用域大小:public protected default(默认值,不写!) private

转载于:https://www.cnblogs.com/whwjava/p/8656444.html

JAVA Class6相关推荐

  1. Java构造器、静态对象、非静态对象等的初始化顺序

    Java创建类对象时对于构造器,静态对象.非静态对象的初始化有一定的顺序,我简单归纳一下: class classes {public classes(String n) {System.out.pr ...

  2. 2015.8.3 Java

    今天继续学习Java  用的是eclipse IDE 这个ide怪怪的,但是有一个很方便的功能 就是通过右键选择source 可以点击Generate Getters and Setters生成属性的 ...

  3. 【笔记】深入理解 Java 虚拟机:晚期(运行期)优化

    文章目录 概述 Hotspot 虚拟机内的即时编译器 解释器与编译器 编译对象与触发条件 方法调用计数器 回边计数器 编译过程 Client Compiler Server Compiler 编译优化 ...

  4. Java自带 JVM监控工具

    Jdk自带工具之监控工具 Jdk工具所在默认路径 常用工具 jps jps -l 输出完整的包名称 jps -m 输出所有预加载包和启动类名 jps -v 输出启动类名和 JVM参数 jstack 输 ...

  5. java模拟真正学生管理系统

    这是我第一次,搞这种近乎于现实的学生管理系统,基本功能都实现了,做了我六个小时,昨天下午六点,跟着EDG敲了一路代码,EDG打比赛,我打代码,太燃了,EDG夺冠,EDG牛逼!!!! 全校都在高呼EDG ...

  6. 在Java层面(window和Linux系统)下的常用性能监控与调优工具的命令及操作

    前言 总结,学习,发现问题,再总结,避免以后,在需要的时候抓狂! jvm中的gc的参数解释 年轻代survivor(幸存区) S0C 年轻代中第一个survivor(幸存区)的容量(kb) S1C 年 ...

  7. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  8. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  9. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  10. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

最新文章

  1. centOs7上用yum安装软件报错
  2. python【力扣LeetCode算法题库】945- 使数组唯一的最小增量
  3. 【面试题】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
  4. push方法java_万字长文深入浅出谈Java数据类型系列之Stack
  5. emd实现信息隐藏_【读书笔记】深入理解TensorFlow架构设计与实现原理(五)
  6. 算法学习笔记:对指定金额计算最少钞票数
  7. 接口测试质量评估标准
  8. 烹佛烹祖大炉鞴,锻凡锻圣恶钳锤
  9. `ifdef、`else、`endif 用法
  10. python mssql get image bin_python 使用pymssql连接sql server数据库
  11. 象棋名手3.26版本32位六核完美破解版,含第四代无敌开局库。
  12. 前端使用goeasy
  13. Echarts 图表放大功能
  14. 《软件工程与实践》 |(一)软件工程基础概述 知识梳理
  15. 大数据分析与应用技术创新平台
  16. 解决uniapp从首页列表进入详情页,再返回首页时滚动条在顶部的问题
  17. 80后的我们为什么不结婚
  18. lnmp安装tpshop
  19. linux命令指南之三
  20. Error : connect Time out

热门文章

  1. mysql安装步骤及报错处理(windows)
  2. Python转义符的使用
  3. 自动控制理论——拉普拉斯变换定义及性质
  4. VSCODE 远程编译调试ARM开发板
  5. 让 Directory Opus 支持 Windows 10 的暗色主题
  6. 加拿大前十大学计算机硕士学费,2018年加拿大各大学硕士学费一览表!
  7. 【分享】RSS订阅技巧及工具和实用RSS链接分享
  8. 筛选过的 Code rule
  9. 如何用优盘安装服务器操作系统,使用优盘安装服务器
  10. 计算机设置密码打印机无法共享,win7设置开机密码后无法连接共享打印机