提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
Java一门面向对象编程语言。面向对象的特点:抽象、封装、继承、多态。
一、抽象
编程的目的就是将现实的事物抽象为计算机可以理解的代码。
二、封装
目的是将事物的信息放到一个类中表达,可以控制类和类中属性的访问权限。
优点:
- 减少耦合:可以独立开发、测试、优化、使用、理解和修改。
- 减轻维护负担
- 有效地调节性能
- 提高软件的可复用性
- 降低构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的。
三、继承
实现IS-A关系,如小明和人就是一种IS-A关系。可以实现对类的复用,通过继承一个现有的类。可以是使用已经定义的类中的方法和变量。注意:类的方法可以被继承,但是类的构造器不能被继承。
类的继承访问控制:
代码示例如下:
父类:Person.java
package org.example.面向对象;
public class Person {
String name;//虽然是default但是子类在同一个包下是可以访问的
public Integer age;
private Integer money;
public void dance(){
System.out.println("跳舞");
}
public void sing(){
System.out.println("唱歌");
}
private void getMoney(){
System.out.println("去现金");
}
}
子类:Girl.java
package org.example.面向对象;
public class Girl extends Person{//女孩也是person所以拥有person的属性
//也会有name和age属性
public static void main(String[] argss){
Girl girl=new Girl();
girl.name="我是小红";
girl.dance();
}
}
四、多态
1、一个类型为S的变量既可以指向类型为S的对象,又可以指向S的任何子类的对象。方法重写和向上类型转换都是泛型的体现。
- List list=new ArrayList()//实现为不同的子类
- List list=new LinkedList();
2、以多态的形式来传递参数,增强了参数类型的灵活性
- 如:public void getName(Collection col);
- 其中Collection就是接口,调用的时候可以传递任何子类型,从而实现多态。
3、一个对象只能有一种确切的数据类型(new 的时候只能有一种类型)
4、一个引用类型如果声明为父类的类型,到实际引用的是子类对象,那么改变量不能访问子类中添加的属性和方法。
- List list=new ArryList();
代码如下:
Person.java
package org.example.面向对象;
public class Person {
/*多态*/
private String name="p";
public void getName(){
System.out.println("name="+name);
}
}
Test.java
package org.example.面向对象;
public class Test {
/*多态*/
public void printPerson(Person p){
p.getName();
}
public static void main(String[] args){
Person p=new Person();//父类可以实例化任何一个子类
p=new Girl();
p.getName();//这里声明为Person,不能调用Girl的函数
Test t=new Test();//可以传递不同的子类
t.printPerson(new Girl());
}
}
Girl.java
package org.example.面向对象;
public class Girl extends Person{//女孩也是person所以拥有person的属性
/*多态*/
@Override
public void getName(){
System.out.println("girl name");
}
public void sing(){
System.out.println("girl sing");
}
}
以上是代码练习