java面向对象编程的四大特征
抽象、封装、继承、多态
1.抽象:把一类事物的共同属性和行为提取出来,形成一个物理模拟,这种研究问题的方法。
2.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)
才能对数据进行操作。
2.1 public class Demo{
public static void main(String[] args){
Clerk clerk1 = new Clerk("小花",24,4567.6f);
System.out.println("名字是",+ clerk1.name + "薪水" + clerk1.getSal());
}
}
class Clerk {
public String name;
private int age;
private float salary;
public Clerk(String name,int age,float sal){
this.name = name;
this.age = age;
this.salary = sal;
}
public float getSal(){
return this.salary;
}
}
2.2 访问修饰符
访问级别 访问控制修饰符 同类 同包 子类 不同包
1 public Y Y Y Y
2 protect Y Y Y N
3 没有修饰符 Y Y N N
4 private Y N N N
3.继承
在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,之需要extends语句声明继承父类
*****子类最多只能继承一个父类(指直接继承)
java所有类都是Obiect类的子类
package com.abc;
public class Demo117{
public static void main(String[] args){
Pupil p1 = new Pupil();
p1.printName();
}
}
class Stu{
protected int age;
public String name;
public float fee;
private String job;//私有不被继承,不希望继承某个属性和方法 就声明为private
public void printName(){
System.out.println("名字" + this.name);
}
}
class Pupil extends Stu{
public void pay(float fee){
this.fee=fee;
}
}
class Pre extends Pupil{
public void pay(float fee){
this.fee=fee*1.5f;
}
}
4.多态
4.1方法重载
(1)方法名相同
(2)方法的参数类型、个数、顺序、至少有一项不同。
(3)方法的返回类型可以不同
(4)方法的修饰符可以不同
4.2方法重写
(1)子类的方法的返回类型、参数、方法名称要和父类的一样
(2)子类方法不能缩小父类方法的访问权限
public class Demo{
public static void main(String[] args){
Cat cat1 = new Cat();
cat1.cry();
Dog dog1 = new Dog();
dog1.cry();
}
}
class Animal{
int age;
String name;
public void cry(){
System.out.println("我是动物,不知道叫");
}
}
class Cat extends Animal{
public void cry(){
System.out.println("猫猫叫");
}
}
class Dog extends Animal{
public void cry(){
System.out.println("狗叫");
}
}
******super.xxx;调用父类XXX的变量或方法引用。
******super.xxx();直接访问调用父类的方法。
******super();调用父类初始化方法public xxx()方法。
4.3 多态
public class Demo123{
public static void main(String[] args){
Animal an = new Cat();
an.cry();
an = new Dog();
an.cry();
Master master = new Master();
master.feed(new Dog(),new Bone());
master.feed(new Cat(),new Fish());
}
}
class Master{
public void feed (Animal an,Food f);
an.eat();
f.showName();
}
class Animal (){
public void eat(){
}
}
class Dog extends Animal (){
public void eat(){
}
}
class Cat Extends Animal (){
public void eat(){
}
}
class Food{
public void show Name(){
}
}
class Fish extends Food{
public void show Name(){
}
}
class Bone extends Food{
public void show Name(){
}
}