本文主要是介绍Day08-封装与继承,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Day08
- 总结
- static关键字
- 包的命名规范
- 设计类
- 封装
- this关键字
- 继承
- 子类可以从父类继承什么
- 特点
- 方法重写(Override)
- 注意事项
总结
我是最棒的!基础不牢,地动山摇!
static关键字
static是静态修饰符,表示静态的
-
可以修饰普通方法
-
可以修饰字段[ 成员字段 ]
-
可以修饰内部类[暂时不了解]
-
不可以修饰外部类
-
不可以修饰局部变量;
-
不可以修饰构造方法
//static修饰的变量有一个静态区,一般是全局常量用static修饰
class Test{public static final int SIZE = 32;//数学上的PIpublic static final double PI = 3.14;
}
-
static类级别的修饰符理解
(1) static修饰的字段:应该通过类名.字段名访问
(2) static修饰的字段:应该通过类名.方法,该字段被该类的所有对象共享
-
对象级别
(1) 非static修饰的字段:对象名.字段名
(2) 非static修饰的字段及方法,当创建对象时候,独属于每每一个对象,每有被该类的所有对象共享
-
静态上下文不能访问非静态的变量及方法
-
非静态上下文可以访问静态上下文:
对象是指具体的个体(也叫做实例instance)
包的命名规范
包命名规范:
一般是公司域名反过来写+项目名+模块名字+子模块名
设计类
封装
通过给类中的成员(字段,方法,构造方法)添加访问权限来实现访问控制
访问权限修饰符
//public 任何地方都能访问
//protected 本包中所有的类或者是它们的子类
//默认不写 本包中的所有类
//private 只允许本类中
###javaBean标准类
概念
-
字段必须私有化
-
给每一个字段提供合理的getter setter方法
-
必须有一个公共的无参数的构造方法;
4) 类是公共的
package cn.itsource.pottindemo;
/*** 标准javabean* * 1.字段用private修饰* 2.有一个无参构造方法* 3.每个字段有对应的get和set方法* 4.类必须用public修饰* * @author tyx666**/
public class Student {/**姓名字段和年龄字段*/private String name;private int age;/**无参构造方法*/public Student(){}/**有参构造方法*/public Student(String name,int age){this.name = name;this.age = age;}/**每个字段的get和set方法*/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;}
}
this关键字
指代的是当前对象
###适用场景
-
解决局部变量和成员变量的二义性 — get set 方法中的应用[在get/set可以写this]
-
作为返回值返回 : this持有对象地址,表示该类的一个对象即是一个数据
-
作为参数传递
-
本类中构造方法之间的相互调用,但必须是构造方法中的第一句
/**无参构造方法*/public Student(){//调用有参构造方法this("xxx", 20);}/**有参构造方法*/public Student(String name,int age){this.name = name;this.age = age;}
继承
主要是提高代码的复用性,把相同的部分抽出去放到另一个类中,这个类叫其他类的父类(超类,基类,根类)。继承它的类叫子类(派生类,拓展类)
子类可以从父类继承什么
非私有的方法和字段可以被继承到,构造方法不能继承
私有方法和字段可以通过其他方法间接调用
特点
-
单继承
一个类只能有一个直接父类
-
多重继承
一个类可以有子类,子类也可以有子类,以此类推
-
隐式继承
每个类都间接或者直接地继承了Object类
方法重写(Override)
方法名和形参列表相同,根据自己的需求来重写方法。
例如人和猪都会吃,都是吃的东西不一样
class Person extends animal{@Overridepublic void eat(){System.out.println(“人吃猪肉”);}
}class Pig extends animal{@Overridepublic void eat(){System.out.println(“猪吃白菜”);}
}
注意事项
-
重写只能出现在继承关系之中。当一个类继承它的父类方法时,都有机会重写该父类的方法。前提是父类的方法没有被被final(中文意思:最终的,以后讲)修饰
-
子类方法和父类方法的方法签名(方法名+参数列表)完全一致;
-
访问权限 : 子类方法的访问权限(修饰符)不能够比父类方法的访问权限更低(大于等于);
-
static 方法不能够被重写 (java语法)
-
返回值类型 : 子类方法的返回值类型可以是父类方法的返回值类型的子类或者相等
问题代码: int long根本不是类,int也不是long的子类
-
子类抛出的异常(Exception)下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常,异常以后讲)
-
方法体 : 子类方法和父类方法主体可以一样, 但是没有任何意义!
这篇关于Day08-封装与继承的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!