Java基础之面向对象和面向过程

Java基础

面向对象和面向过程

  1. 面向过程(自己做)
    举个例子:想吃面包
    买面 、和面 、模型 、烤熟 、吃面包。
  2. 面向对象(让别人做)
    相同的例子:想吃面包
    让面包师做一系列过程(买面 、和面 、模型 、烤熟 ),吃面包。
    面向对象以面向过程为基础。
  3. 类和对象
    3.1
    对具有共同属性和行为特征的一类事物的抽象。
    3.2 对象
    通过类创建的实例。
    类是创建对象的模板。
  4. 类的定义
    class 类名{
    类成员的定义:成员变量,方法,块
    }
	public class Student {
		public String name;
		public String stuNo;
		public void study() {
			System.out.println("学习大数据基础");
		}
	}
  1. 类分为工具类和测试类(程序入口类)
  2. 构造方法(构造器)
    6.1 什么是构造方法
    方法名和类名相同,无返回类型。
    可以有多个(构造方法重载)。
    6.2 来源
    2个途径,1个是系统默认(一定是public修饰),1个是自定义。
    6.3 作用
    和new一起完成创建对象。
    6.4 使用
    new 对象
    不能像普通方法一样用“对象.方法”来调用。
  3. 对象的初始化过程
    创建对象时,成员变量会被初始化。
  4. 构造块
    在构造方法之前执行,初始化成员变量。
	public class Demo {
		public int x;
		//构造块
		{
			x = 2;
			System.out.println("构造块");
		}
		public Demo() {
			System.out.println("构造方法");
		}
	}

附加内容:块

	public void test() {
		//执行完毕,立即回收,提高内存利用率
		{
			int x = 9;
			System.out.println(x);
		}
		System.out.println("test");
	}
  1. 变量的分类
    成员变量和局部变量
    成员变量:定义类体中
    局部变量:方法内或者参数列表
  2. this关键字
    this:表示当前类对象
    访问类成员:this.成员
    调用本类的构造方法:this(实参);
    注意: this(实参);必须是构造函数的第一条有效语句。
	public Demo(int x) {
		this();
		this.x = x;
	}
  1. 面向对象的三大特征
    封装、继承、多态
    11.1 封装
    封装了细节
	public class Person {
		//实现封装:private
		//set/get方法
		private int age;
		public void setAge(int age) {
			if(age >= 0 && age <= 150) {
				this.age = age;
			}else {
				System.out.println("年龄错误!");
			}
			return;
		}
		public int getAge() {
			return this.age;
		}
	}

11.2 继承
特点
什么是继承: 由已有类产生新类。
父类子类:已有类->父类 新类->子类
继承性:子类可以继承父类的所有成员(构造方法不能继承),私有成员不可以使用。
java单一继承。
Object是顶级类。
extends
super
表示父类的对象。
super.成员
super(参数):必须是子类构造方法的第一条有效语句。
访问修饰符
private:修饰:变量、方法-------访问范围:本类
默认:修饰:类、变量、方法-------访问范围:本包
protected:修饰:变量、方法-------访问范围:具有继承关系的所有类
public:修饰:类、变量、方法-------访问范围:任何地方
方法重写
环境:继承关系
父类和子类方法名相同,参数列表相同,方法的返回类型相同或者子类方法返回类型<=父类

	public class Demo {
		public void str() {
			System.out.println("demo");
		}
	}
	
	class Demo2 extends Demo{
		public void str() {
			System.out.println("demo2");
		}
	}
	
	class D1{
		Demo demo = new Demo();
		public Demo d() {
			return demo;
		}
	}
	
	class D2 extends D1{
		Demo2 demo = new Demo2();
		public Demo2 d() {
			return demo;
		}
	}

子类方法的访问修饰符>=父类
子类方法的异常(非运行时异常)<=父类
如果父类方法的访问修饰符为private,子类中有与它同名同参同返回类型的方法也不能叫方法重写
为什么进行重写:为了扩展父类方法的功能
继承关系中构造方法的调用规则
子类的构造方法中不写super(实参),会有默认的super()。
11.3 多态
定义:一种类型的变量可以指向不同的对象

	Animal a1 = new Bird();
	Animal a2 = new Dog();

编译时的多态:方法重载
运行时的多态:方法重写
在编译时,看变量的声明类型;
在运行时,如果子类重写了父类的方法,动态绑定到子类上,运行子类的方法。
对于上面的代码来说,a1和a2调用的方法在Animal中必须存在才可以,否则编译错误。
对于上面的代码来说,如果Animal和Bird中有同名的变量a,则a1调用的变量a是Animal中的。
12. 对象造型(对象的强制转换)
instanceof

	public void test(Animal animal) {
		if(animal instanceof Dog) {
			((Dog) animal).d();
		}else if(animal instanceof Bird) {
			((Bird) animal).b();
		}
	}
  1. 注意
    同一类型的兄弟对象不能强转
	public void test2() {
		Dog dog = new Dog();
		Bird bird = new Bird();
		//bird = (Bird)dog;//编译错误
		Animal dog2 = new Dog();
		bird = (Bird)dog2;//会导致运行时异常
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值