JavaSE基础语法-面向对象语言的三大特征1
1.封装
**封装:**就是将类的某些信息藏在类内部,不允许外部程序直接访问。是通过该类提供的方法来实现对隐藏信息的操作和访问。
优点:
1.只能通过规定的方法访问。
2.隐藏类的实现细节。
3.方便加入控制语句。
4.方便修改信息。
封装后可以向外部程序提供专门的方法,来访问类的私有属性。
this关键字
:表示自身类的对象。
可以引用成员变量和成员方法,但是只能在非静态方法中使用。
public class Demo1 {
String name;
int age;
public Demo1(int age){
//局部变量age把Demo1中的属性屏蔽
this.age=age;
}
public void SetName(String n){
if(n<5){
name=n;
}
}
}
2.继承
1.继承
继承是面向对象程序设计中不可缺少的设计思想,是实现代码可重用的根本,是提高代码可扩充性的属性的主要途径。
关键字:extends
Java不支持多继承,只能由一个父类。
继承是新的类吸收其他的类,并扩充新的能力。
子类可以继承父类的所有非私有属性和非私有方法。但是如果不同包,那默认的也不能继承。
c使b的子类(派生类),b是c的父类(基类)。
传递性:c继承b,b继承a,那么c就拥有a和b的所有非私有属性和非私有方法。
Object:如果一个类没有继承任何一个类,那么JVM就会默认给该类继承一个Object类。
2.为何要使用继承?
因为继承与真实世界类似,符合is-a关系的设计,使用继承。
3.代码
Animal类
public class Animal {
public void Animal(){
System.out.println("动物");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int agel) {
this.age = age;
}
private String name;
private int age;
int weight;
}
Cat类
public class Cat extends Animal{
private String eat;
public void Cat(){
System.out.println("猫");
}
public void getEat() {
System.out.println("吃");
}
void run(){
System.out.println("跑");
}
}
Test类
public class test {
public static void main(String[] args) {
XiaoMao mm=new XiaoMao();
mm.getEat();
mm.run();
}
}
4.继承中的构造方法
子类总是先调用父类的构造方法,默认情况下调用父类的无参构造方法。
可以在子类的构造方法的第一行,使用super关键字调父类任意一个构造方法。
原因:子类创建后需要调用父类的方法,所以创建子类对象时父类也需要同时被创建。
5.super关键字
super关键字代表父类的引用,在程序中的主要用途
1.在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。
2.用"super.成员变量名"来引用父类成员变量。
3.用"super.方法名(参数列表)"的方式访问父类的方法。
4.与this的区别,this通常指代当前对象,super通常指代父类。
6.方法的重写
当父类的方法不能满足子类的需求的时候,就会在子类进行方法重写。
重写的规则:
1.方法名相同,参数列表相同。
2.返回值类型相同。
3.访问权限修饰符相同。
4.即与父类结构体完全相同。
注:不能重写静态方法,也不能重写构造方法。
重写的标志:@Override
3.类之间的关系
1.关联关系
对象与对象(运行状态下)之间的联系,类与类(静态状态下)之间的联系。
具体表现:一个类作为另一个类的属性类型存在。
两者之间是有关系,“has-a”。
关联分为单向和双向:单向A关联B。
双向:A关联B,B关联A。
关联关系的多重性:一对一关联,一对多关联。
解决一对多关联的方案:1.集合 2.数组
public class Person {
private String name;
private int age;
private String sex;
private Student ljl;//单向关联
public int getAge(int age){
this.age=age;
return age;
}
}
public class Student {
String Name;
public Student(Gun gun) {
this.gun = gun;
}
}
2.依赖关系
A类使用到了B类
特点:依赖是具有偶然性的,临时性的,非常弱的,但是B类还是会影响到A类。
两者之间是**"使用"关系,“use-a”**
具体表现:B类作为参数在A类的某个方法中执行。
public class Person {
private String name;
public Soldier() {
}
public Student(Gun gun) {
this.gun = gun;
}
}