Java学习笔记之封装与继承
封装
1,将属性定义为私有的(private) 不能通过 对象名.属性 来直接访问,但是可以通过方法来间接的访问,
2,封装的意义:公有属性可以被随意修改,并且不能被程序察觉。封装后,别人通过方法来访问属性时,我们可以添加限制,访问可以被程序察觉。
下面我们用封装定义一个手机类(这种类一般我们称为 javabean)
public class Phone {
private String type;
private int price;
private String color;
public String getType(){
return type;
}
public void setType(String type){
this.type=type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
注意
1,类中属性和方法的定义顺序没有先后之分
2,当参数与属性重名时,计算机会优先考虑参数(这本身是错误的,不要这样做)
继承
继承:子类继承父类的几乎所有内容(属性跟方法) 关键字 extends
1,那么什么不能被继承呢? private(私有属性)和构造方法不能被继承
2,所有类都是object的子类
3,在java中只能单继承
重写:当子类继承过来的方法不满意,重新覆盖这个方法。
1,当重写了父类的方法,调用的是子类重写过的方法,不会调用父类的那个方法。
public class Person {
public void eat(){
System.out.println("我是父类的方法吃...");
}
}
public class Student extends Person {
//重写 方法名与父类相同 会覆盖父类的方法
@Override
public void eat() {
System.out.println("我是子类中重写的父类方法吃...");
}
}
public class Text {
//我是测试类
public static void main(String[] args) {
Student s=new Student();
s.eat();
}
}
//控制台输出结果为:
//我是子类中重写的父类方法吃...
2,super 可以在子类中调用父类的方法
public class Student extends Person {
//重写 方法名与父类相同 会覆盖父类的方法
@Override
public void eat() {
//调用父类中的eat()
super.eat()
System.out.println("我是子类中重写的父类方法吃...");
}
}
//若再进行测试,控制台输出结果为:
//我是父类的方法吃...
//我是子类中重写的父类方法吃...
重载:方法名与父类相同,参数列表不同 ,是根据参数列表来匹配执行哪个方法
public class Student extends Person {
//重载 方法名与父类相同,参数列表不同
public void eat(String s) {
System.out.println("我是子类中重载的父类方法吃...");
}
}
public class Text {
//我是测试类
public static void main(String[] args) {
Student s=new Student();
//参数对应就会调用相应的方法
s.eat("sss");
}
}
//结果为:我是子类中重载的父类方法吃...
要点:当创建子类对象的时候,会先初始化父类的对象。如果没有显示调用父类的构造方法,默认调用父类的无参的构造方法。
构造方法重载
public Student(String sex){
System.out.println("------>sex");
//如果没有显示调用父类的构造方法,默认调用父类的无参的构造方法。
this.sex = sex ;
}
public Student(String sex,int age){
this(sex); // this() 表示的是本类其他的构造方法,根据参数寻找是哪个构造方法。当表示其他构造方法的时候必须必须放在第一行。
this.age = age ;
System.out.println("------>sex age ");
}
public Student(){
super("sssss");// 显示调用父类的构造方法,不需要方法名。当super父类构造方法的时候,必须放在第一行。
System.out.println("-----Student的构造方法------");
}
Java学习笔记之封装与继承的更多相关文章
- Java 学习笔记 ------第六章 继承与多态
本章学习目标: 了解继承的目的 了解继承与多态的关系 知道如何重新定义方法 认识java.lang.object 简介垃圾回收机制 一.继承 继承是java面向对象编程技术的一块基石,因为它允许创建分 ...
- Java学习笔记 07 接口、继承与多态
一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...
- Java学习笔记(九)——继承
一.继承 1.概念: 继承是类于类之间的关系,是一种"is a "的关系 Ps: Java是单继承 2.优势: (1)子类直接拥有父类的所有属性和方法(除了privata) (2) ...
- [core java学习笔记][第五章继承]
5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...
- 1.11(java学习笔记)封装
封装将内部细节封装起来,只暴露外部接口. 比如我们的电视就将复杂的内部线路用外壳封装起来,只留下外部按钮或遥控,用户只需要知道按钮或遥控的作用就可以,无需明白电视内部是如何工作. 而且封装也保障了安全 ...
- Java学习笔记之——封装
1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
随机推荐
- 如何在Centos服务器上搭建起Oracle10、VNC、以及FTP
一.重装和分区 1.配置所需磁盘阵列(Raid): 2.正确分区: 3.Centos安装:过于简单,请自行bd. 二.连网 系统安装完成之后,我们需为其分配IP和DNS: "编辑连接&quo ...
- zookeeper与kafka集群部署实现
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终, ...
- Dubbo 与 Spring Cloud 完美结合
Dubbo 与 Spring Cloud 完美结合 1. 概述 可能说起来Dubbo,很多人都不陌生,这毕竟是一款从2012年就开始开源的Java RPC框架,中间由于各种各样的原因停止更新4年半的时 ...
- 设置IntelliJ IDEA支持lambda表达式
使用IntelliJ IDEA做为开发工具,对基于maven的java工程,如果要编写lambda表达式,先确保安装并使用了jdk1.8或者更高版本,然后再要做一些设置才能正常编译和执行,具体表现在m ...
- react navigation goBack()返回到任意页面(不集成redux) 二
实现思路: A -- > B (获取A的key值,传至C)-- >C(获取B传来的A页面key值,传至D) -- >D(获取C传来的A页面key值&C页面的key值,传至下一 ...
- 在Win10右键菜单添加校验文件Hash值命令
把以下代码保存为reg文件导入注册表即可. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\文件哈希校验] " ...
- HTML表格列表简介
HTML简介: html列表: ol标签:order list 有序列表. ul标签:unorder list 无序列表. li标签:list item 列表项. style属性: 标签内写css表达 ...
- C++基础之string类
string也是属于顺序容器,但是string类很重要且经常使用,因此在这里单独记录. string的操作总结 string(const char *s,int n); //用c字符串s初始化,s应 ...
- java取json 的方法
public static void main(String[] args) { String jsonStr = "[{\"varieties_type\":\&quo ...
- Multiple types were found that match the controller named 'Auth'.
偶然的一个机会,修改了已经开发完毕的一个项目的命名.突然运行发现: { "Message": "An error has occurred.", "E ...