提到面向对象的开发要先从面向过程的开发说起。
面向过程:
概念:按照一定的顺序实现的编程称为面向过程的编程。
特点:这种开发方式注重于过程。
缺点:
1.效率低。程序只按照顺序自上而下执行,效率相对低,尤其是执行几百行的代码,不好。
2.不灵活。面向过程的开发通常都是在一个类中写一堆方法,一堆变量,这样显得很臃肿,不够灵活。
3.不安全。
4.可维护性差。
针对以上缺点,Java给我们提供了一个很好的开发方式——面向对象的开发。
面向对象:
定义:将相关的方法和属性写在一个类中,将来通过new关键字进行实例化对象调用。
面向对象的开发就是不断地创建对象、调用对象、指挥对象来为我们实现功能,我们就是在不断地管理和维护对象之间的关系。
优点:
1.灵活。将各功能代码封装到了不同的类中,通过类来实现功能。
2.安全。封装在了
特征:封装、继承、多态。
封装:把不想对外公开的代码,用pravite关键字修饰,进行封装,然后对外提供公共的访问方式(如GET、SET方法等),达到封装的目的。一般只封装成员属性(成员方法)。
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
修饰词:
public:公共的,在任何地方都可以访问;
protected:受保护的,在同包类或子类中可以访问;
default:默认的,在同包类中可以访问到;
pravite:私有的,只能在当前类中被访问到。
继承:主要提高代码的复用性,通过关键字extends实现继承。继承后子类具有了父类的属性和方法,子类还可以扩展自己独有的方法和属性,也可以通过重写实现父类方法的覆盖。一个父类可以有多个子类,一个子类只能继承一个直接父类。
public class Zi extends Fu{}
<!--Zi表继承Fu表-->
多态:所谓多态就是有多种形态,日常见到的有三种表现形式:重写、重载、向上造型。
重写:父子类中,方法名相同,参数列表相同,具体实现不同,且无关返回值类型。
重写的两大一小原则:
1.子类访问权限>=父类访问权限
2.子类返回类型<=父类返回类型
3.子类抛出异常<=父类抛出异常
重载:同一类中,方法名相同,参数列表不同,具体实现不同,且与返回值无关。
重写与重载的区别:
1.场景不同,重写在父子类中,重载在同一类中;
2.参数列表,重写要求参数列表相同,重载要求参数列表不同;
3.返回,重写无关返回值类型,重载无关返回值。
向上造型:父类引用指向子类对象。严格的说父类不能引用子类对象,但可以引用子类重写后的方法。
格式:父类名 对象名 = new 子类名();
除以上三种表现形式外,多态还有一种表现形式——向下造型
向下造型:子类引用指向父类对象。实例化对象是必须进行强制类型转换。
----------------------------------------------------------------------------------------------------------
上面说了面向对象 ,那么现在说一下实例化的问题
在java中,类中的类中的方法和属性不可以直接被调用,需要实例化成对象才能被调用。
实例化:实例化也成为对象,是类的具体实现。通过new关键字来创建对象。创建对象开辟内存空间在堆中。创建对象的过程就是实例化的过程。
Scanner sc = new Scanner(System.in);
其中,Scanner就是一个类的类名
sc被称为对象名
等号后面就是创建对象的过程
Scanner(System.in)是Scanner类的一个构造
可以通过 对象名.对象; 的方式调用对象。
匿名对象:就是没有名字的对象,适用于只调用一次对象的场景(可以作为参数传递)。这种方式调用完毕后,java会将开辟在内存中的堆空间回收,很好用。
System.out.print(this.name);
}