- 初识面向对象
(1).什么是类
什么是类这个问题本身就是抽象的,它类似于你买商品时,你要去超市(超市就是一个类);超市里面有各种商品,商品都区分开的,但是区分开的这些商品之间都是有关联关系的。这个就是类,通过类在来new(实例化)这个就是面向对象。
(2).属性跟方法
属性:就是每个类之间公共的数据;比如商品里面的公共属性就会有名字、价格...
方法:就是每个类之间会触发的事件;比如你拿商品是一个方法、结账是一个方法...
(3).什么是对象
通过类里面写属性跟方法来new(实例化)的到的就是对象 - 对象的创建分析
通过关键字new(实例化)来创建写 - 方法的重写
//父类 public class TestParentClass { public void eat() { System.out.println("我是一个父类方法"); } } //子类 public final class TestSubclass extends TestParentClass { @Override public void eat() { System.out.println("我是子类重写方法"); } public static void main(String[] args) { TestSubclass testSubclass = new TestSubclass(); testSubclass.eat(); } }
- 面向对象的三大特性
封装:把代码简化就是封装
继承:类是可以继承父类也可以写个类来让子类继承
多态:父类引用指向子类对象等于像上转型(父类new子类);通过方法重写实现不一样的事情时;(注:多态指的时方法,属性时不存在多态的);存在条件需要:继承关系、方法重写、父类引用指向子类(new的谁执行谁的方法,父类可以指向子类不能调用子类独有的方法) - 抽象类和接口
(1)抽象类
abstract => 抽象类
注:类只能单继承,接口可以多继承;抽象类不存在构造方法;
抽象类可以写普通方法跟抽象方法(可以写代码块/结果体),普通类不能写抽象方法;
抽象类不能去new只能子类去实现他,他是一种约束!!!//父抽象类 public abstract class TestAbstract { //这是一个抽象方法, public abstract void run(); //当然这里面也可以是普通的方法 public void eat() { System.out.println("我是一个在抽象类里面的普通方法"); } } //子类 public final class TestSubclass extends TestAbstract { @Override public void run() { System.out.println("我是方法重写"); } public static void main(String[] args) { TestSubclass testSubclass = new TestSubclass(); testSubclass.run(); testSubclass.eat(); } }
(2)接口
接口通过interface去定义
注:接口中的定义,所有都是抽象的(接口中的方法默认就是抽象的)
1.定义一些方法,让不同的人实现
2.接口不能实例化,接口中没有构造方法
3.interface可以实现多个接口(但是接口中的方法必须重写)//接口 public interface TestInterface{ //接口中定义变量(public static final) public static final int a = 1; public static final String name = "11"; void add(); default void a(){ System.out.println("固定的"); } } //类继承接口 public class TestClass implements TestInterface{ @Override public void add() { System.out.println("我是接口"); } public static void main(String[] args) { OTestClass testClass = new TestClass (); testClass.a(); testClass.add(); } }