------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
Java基础知识
一、封装
A:封装的引入
通过学生案例,给年龄赋值为负数引出数据问题。
然后通过private解决这个问题。最后说其实这就是封装。
B:封装概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
C:封装好处
隐藏实现细节,提供公共的访问方式。类,方法等其实都是封装的具体体现。
提高了代码的复用性
提高安全性。
D:封装原则
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
E:常见的应用
类中的所有成员变量私有,给出对应的get/set方法。
F:代码实现:
class Student{
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
二、private this static关键字
A:private关键字的概述和特点
1) private关键字特点
a:是一个权限修饰符
b:可以修饰成员变量和成员方法
c:被其修饰的成员只能在本类中被访问
2) private最常见的应用
(1):把成员变量用private修饰
(2):提供对应的getXxx()和setXxx()方法
B:this关键字的概述和应用
A:为什么要有this
当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了 成员变量的问题
B:this关键字特点
是一个关键字,代表当前类的对象引用。
简单记:在方法中,哪个对象调用方法,this就代表谁。
C:this的应用场景
解决局部变量隐藏成员变量问题。
在构造方法中调用其他的构造方法(必须写在第一行) this();
在其他方法中可以使用this.普通方法名()调用普通方法 this.eat();
C:static关键字
1)概述
是一个关键字。可以修饰成员变量和成员方法。
2)静态的特点
a:随着类的加载而加载
b:优先于对象存在
c:被类的所有对象共享
d:可以通过类名调用
3)静态的注意事项
a:在静态方法中是没有this关键字的。
b:静态方法只能访问静态的成员变量和静态的成员方法。
4)静态内容的调用
a:被对象调用
b:被类名调用
5)什么时候该用static
如果某个内容是所有对象共享的,就用静态修饰。
例如:
水杯和饮水机。
厕所和人。
老师和学生。
三、继承(extends)
A: 概述:
把多个类中的相同的属性和行为进行抽取,封装到一个类中,
然后再建立新类的时候,不需要从头做起,继承刚才定义的那个类即可。
B:好处:
a:提高代码的复用性。
b:让类与类之间产生了一个关系,是多态的前提。
C:什么时候使用继承
a:如果类之间存在着: is a 的关系,就可以考虑使用继承。
b:不要为了继承部分功能,而去使用继承。
D:继承的特点:
a:Java只支持单继承,不支持多继承。
如果支持多继承,就会有调用不明确的问题。
b:Java支持多层(重)继承。也就是说java中的接口支持多继承
E:super和this的区别
a:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲对象的引用)
b:它和this的用法相似
1:成员变量
this.变量--本类的
super.变量--父类的
2:构造方法
this(...)--本类的
super(...)--父类的
3:成员方法
this.方法名()--本类的
super.方法名()--父类的
F:子父类中成员变量的用法:
a:名称不同,这个太简单了。
b:名称相同,子类对象的在使用的时候:
先找子类局部范围
再找子类成员范围
最后找父类成员范围
父类的父类成员范围
G:子父类中成员方法的用法:
a:名称不同,这个太简单了。
b:名称相同,子类对象的在使用的时候:
先找子类的
再找父类的
c:方法重写
在子类中,方法声明(修饰符,返回值,方法名,参数列表)相同的情况。
注意事项:
1:父类中私有方法是不能被重写
2:子类方法的访问权限一定要大于等于父类的访问权限
3:静态只能重写静态。(这个不能算,因为静态跟类相关)
H:子父类中构造方法的用法:
a:子类的初始化过程中,首先回去执行父类的初始化动作。
因为子类的构造方法中默认有一个super()。
为什么?子类要使用父类的成员变量,这个初始化,必须在子类初始化之前完成。
所以,子类的初始化过程中,会先执行父类的初始化。
b:如果父类没有无参构造方法
1:使用super调用父类的带参构造。推荐方式。
2:使用this调用本身的其他构造。
(1)执行顺序:
静态代码块 --> 构造代码块 --> 构造方法
默认初始化>显式初始化>构造代码块初始化>构造方法初始化
(2)注意事项:
静态代码块只执行一次
四、面向对象小结
A:创建对象时的执行动作:
栈内存开辟空间存储引用变量
使用new创建内存空间
调用构造方法
成员变量默认初始化
成员变量显示初始化
构造函数初始化
对象创建结束,将地址赋值给引用变量
1:定义类
私有成员属性
至少一个空参的构造方法
普通方法
公共的get/set方法通常手动放在最后
2;使用类创建对象
定义引用类型变量用来引用对象
使用new关键字与构造方法完成对象创建
在构造方法的同时对成员变量赋值
使用get/set方法操作成员变量
使用对象名.方法名(参数)调用对象函数
创建对象的过程,在这里可以理解为调用构造方法的过程
构造方法:
用来创建对象的方法。
在创建对象的同时,可以直接为属性赋值。
如果没有手动给出构造方法,则系统会默认给出空参的构造。
构造方法特点:
函数名与类名相同,与函数名标识符命名原则相悖
不进行返回值类型的定义
构造方法没有返回值
构造方法之间以重载的方式存在
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------