一、java语言特点
1、简单易学
2、面向对象(三大特征:封装,继承,多态)
封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
//封装是一种 信息隐藏技术 ,在java中通过关键字private,protected和public实现封装。
//要想访问里面的属性和方法必须通过特定的接口
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
public class Show{
public static void show(String str){
System.out.println(str);
}
}
上面就是对 System.out.println();的封装。
调用的时候 :
public class Use{
public static void main(String[] args){
Show.show("封装");
}
}
这样用的时候就不用使:System.out.println("封装");
作用:
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。
继承:使用extends关键字
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
生活中的继承:
最简单的使用场景:vo继承do
在继承中还涉及到重写的概念:
方法重写(覆盖):在子类重新定义了父类的方法。方法重写必须有相同的方法名,参数列表和返回类型,但访问限制不能比父类严格。
//相同的方法名,参数列表和返回类型
public class Animal {
public String name; // 名字
public int age; // 年龄
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getInfo() {
return "我叫" + name + ",今年" + age + "岁了。";
}
}
public class Cat extends Animal {
private String hobby;
public Cat(String name, int age, String hobby) {
super(name, age);
this.hobby = hobby;
}
public String getInfo() {
return "喵!大家好!我叫" + this.name + ",我今年" + this.age + "岁了,我爱吃" + hobby + "。";
}
public static void main(String[] args) {
Animal animal = new Cat("小白", 2, "鱼");
System.out.println(animal.getInfo());
}
}
喵!大家好!我叫小白,我今年2岁了,我爱吃鱼。
这里父类的getInfo()就被重写了
super 关键字的功能:
- 在子类的构造方法中显式的调用父类构造方法
super(parameter-list);
- 访问父类的成员方法和变量。
super.member(在子类中如果有与父类相同名字的属性,则用super.member调用,而不是this.member)
如果一个类中没有写任何的构造方法,JVM 会生成一个默认的无参构造方法。在继承关系中,由于在子类的构造方法中,第一条语句默认为调用父类的无参构造方法(即默认为 super(),一般这行代码省略了)。所以当在父类中定义了有参构造方法,但是没有定义无参构造方法时,编译器会强制要求我们定义一个相同参数类型的构造方法。
在本例中,父类定义了有参构造方法,但是没有定义无参构造方法。super(name, age);必须写在this.hobby = hobby;前面,在子类构造方法第一行。
多态
多态是指同一种行为作用在不同对象上所做出反应不同,即同一个方法在不同的子类有不同的实现。多态的目的是提高代码的扩展性。