面向对象编程有三大特征
- 封装
- 继承
- 多态
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;
public class encap { // 公共类的名称要与文件名一致
public static void main(String[] args) {
Person person = new Person(); // 创建一个person类的对象
person.setName("asfkajsdkfajsdklfjasdllfasdf");
person.setAge(888000);
person.setSalary(30000);
System.out.println(person.info());
}
}
class Person {
// 访问修饰符可以修饰 1.属性 2.方法 的访问权限
public String name; // java中的String是一个类,所以首字母大写
private int age;
private double salary;
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("err");
this.name = "886";
}
}
public String getName() {
return name;
}
// 设置年龄
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("您输入的年龄不对,给你。。。。。");
this.age = 18;
}
}
public int getAge() {
return age;
}
public void setSalary(double salary) {
this.salary = salary;
}
public double getSalary() {
return salary;
}
public String info() {
return "name = " + name + " age = " + age + " salary = " + salary;
}
}
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;
public class encap { // 公共类的名称要与文件名一致
public static void main(String[] args) {
Person person = new Person(); // 创建一个person类的对象
person.setName("asfkajsdkfajsdklfjasdllfasdf");
person.setAge(888000);
person.setSalary(30000);
System.out.println(person.info());
// 用那个3个参数的构造器
// 这个方法没有用那个set来进行额外的判断,所以失效了,那怎么解决呢?
Person smith = new Person("smith", 180000, 88888);
System.out.println("======smith的信息========");
System.out.println(smith.info());
}
}
class Person {
// 访问修饰符可以修饰 1.属性 2.方法 的访问权限
public String name; // java中的String是一个类,所以首字母大写
private int age;
private double salary;
// 无参构造器
public Person() {
}
// 有3个属性的构造器
public Person(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("err");
this.name = "886";
}
}
public String getName() {
return name;
}
// 设置年龄
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("您输入的年龄不对,给你。。。。。");
this.age = 18;
}
}
public int getAge() {
return age;
}
public void setSalary(double salary) {
this.salary = salary;
}
public double getSalary() {
return salary;
}
public String info() {
return "name = " + name + " age = " + age + " salary = " + salary;
}
}
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;
public class encap { // 公共类的名称要与文件名一致
public static void main(String[] args) {
Person person = new Person(); // 创建一个person类的对象
person.setName("asfkajsdkfajsdklfjasdllfasdf");
person.setAge(888000);
person.setSalary(30000);
System.out.println(person.info());
// 用那个3个参数的构造器
// 这个方法没有用那个set来进行额外的判断,所以失效了,那怎么解决呢?
Person smith = new Person("smith", 180000, 88888);
System.out.println("======smith的信息========");
System.out.println(smith.info());
}
}
class Person {
// 访问修饰符可以修饰 1.属性 2.方法 的访问权限
public String name; // java中的String是一个类,所以首字母大写
private int age;
private double salary;
// 无参构造器
public Person() {
}
// 有3个属性的构造器
public Person(String name, int age, double salary) {
setName(name);
setAge(age);
setSalary(salary);
}
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("err");
this.name = "886";
}
}
public String getName() {
return name;
}
// 设置年龄
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("您输入的年龄不对,给你。。。。。");
this.age = 18;
}
}
public int getAge() {
return age;
}
public void setSalary(double salary) {
this.salary = salary;
}
public double getSalary() {
return salary;
}
public String info() {
return "name = " + name + " age = " + age + " salary = " + salary;
}
}
继承
extends:ex-出 + tend-延展 -> 延伸,在java中代表继承,别忘了加三单哦~
输入ctrl + H,可以看到类的继承关系
Q1:为什么java中所有类都是Object类的子类?
A1:因为Object类中放了子类中常用的对象,所以它是所有类的父类
Q2:为什么java实例化子类的对象时,会先调用父类的构造器呢?
A2:这是因为为了要获得父类的属性和方法,必须要先调用父类的构造器进行初始化。
over-上+ride-骑 -> 骑在上面(vt.推翻)
在Java中是方法的重写