Java面向对象

本文介绍了面向过程和面向对象的概念,强调了类与对象的关系,详细讲解了封装(包括类的定义、构造方法和成员方法)、继承(类继承的实现、方法覆盖和super关键字的使用)以及多态(静态和动态多态)的基本原理和应用。通过实例展示了如何在Java中创建和使用对象,以及如何通过继承和多态实现代码复用和灵活性。
摘要由CSDN通过智能技术生成

工作方式:围绕数据来组织程序。

目录

Ⅰ几个概念:

1.面向过程

2.面向对象

3.类与对象

4.抽象、封装、继承、多态 

Ⅱ封装

1.类的定义

2.类的使用

3.几个关键字

Ⅲ继承

 类继承的实现

 方法覆盖

 super关键字 

 调用父类的构造方法

Ⅳ多态

种类:

编译错误语句:


Ⅰ几个概念:

1.面向过程

2.面向对象

基本概念:对象,类,消息

基本特征:抽象,封装,继承,多态

3.类与对象

类的定义

类声明

格式:

[public][abstract|fifinal] class ClassName [extengs SuperClass] [extends SuperClass]{

//1.成员变量声明

//2.构造方法的定义

//3.成员方法的定义

}

(1)类的修饰符 

public——公共类(可被任何包中的类使用)

若无就只能被同以包中的其他类使用

abstract——抽象类

final——最终类

(2)extends SuperClass

extend——父类

SuperClass——父类名

若无则自动继承Object类

(3)implements InterfaceNameList

实现接口,接口名用逗号分开

(4)类体

成员变量——定义对象状态

构造方法——创建类实例

成员方法——定义对象行为

成员变量的定义

 格式:

[public|protected|private][static][final] type varibleName[=value];

(1)变量的访问修饰符

public——公共变量

protected——保护变量

private——私有变量

无访问修饰符——只能被同一个包中的类访问

(2)

static——静态变量/类变量

无修饰——实例变量

final——最终变量/标识符变量(不可改变

(1)无参数构造方法

public Employee(){}//默认构造方法,不带参数,方法体为空

使用时:

Employee employee = new Employee();

构造方法的定义

格式: 

[public|protected|private] ClassName([paramList]){
         //方法体

}
格式:[构造方法的访问修饰符]构造方法名,必须与类名相同([参数列表])

(2)带参数构造方法

public Employee(String n,int a){

    name = n;

    age = a;

}

使用时:

Employee imp = new Employee("李明",30);

(3)默认构造方法   是  无参数构造方法
(4) 构造方法的重载
成员方法的定义
[public|protected|private][static][final|abstract] returnType methodName ([paramlist]){
          //方法体

}

(1)方法返回值与方法名

methodName——方法名(每一个方法都要有一个方法名

returnType——方法的返回值类型(可以是任何数据类型)数据类型有哪些呢?(基本和引用)具体点呢?

没有返回值则为全局变量

(2)方法参数(多个参数参数的声明中间用逗号)

(3)访问修饰符

protected——同一类,同一包的类以及子类中调用

public——任何类中调用

省略/包可访问——同类方法访问,同包类的访问

(4)

static——静态方法

无修饰——实例方法

(5)

final——最终方法(不能被覆盖方法的覆盖与继承有关

abstract——抽象方法

 对象的使用

创建对象格式:TypeName objectName;

TypeName——引用类型名(可以是类名也可以是接口名)

objectName——对象名/引用名/实例名

对象的使用eg.
System.out.println("姓名 = "+employee.name);
System.out.println("年龄 = "+employee.age);
employee1.sayhell();

主要使用(.)运算符引用和调用进行使用
对象引用赋值

(1)基本数据类型赋值(变量值的副本赋给另一变量)

(2)对象的赋值(对象的引用/地址 赋值给变量)

4.抽象、封装、继承、多态 

Ⅱ封装

1.类的定义

访问符     class     类名  {
        成员变量 ;
        构造方法 ;
        成员方法  ;

访问权限

class

类名

类体

(1)成员变量

初始默认值00.0false‘\u0000’null

(2)构造方法 

    特殊的方法:方法名与类名一致;

                          没有返回类型(不写void,构造方法体内也没有return语句);

                          系统自动调用——new构造方法()实现

    几点说明:如果类中没有定义构造方法,系统会提供一个无参数无方法体的构造方法;

                      如果类中定义了构造方法,系统不会提供;

                      构造方法可以重载

(3)成员方法:

     方法定义的格式

访问权限public——任意位置都可以访问
protected
默认的
private——只能在本类中访问
返回类型基本数据类型
引用数据类型
void——不需要返回值
方法名若干个单词,第一个单词首字母小写,其他单词的首字母大写getSalary()
setDefaultCloseOperation()
形参列表方法定义时的参数,形式参数,简称形参
方法调用时的参数,实际参数,简称实参
是否有return语句

非void返回类型,则必须有return语句;

void返回类型,则不需要return语句

return的值的类型,必须与返回类型一致

     方法的调用

实际参数向形式参数传值值传递参数类型是基本数据类型形参变化,与实参无关
引用传递参数类型是引用数值类型形参变化,实参跟着一起变化

     方法重载

一个类中有多个方法名相同的方法,通过参数不同来区分

参数个数不同;

类型不同;

个数、类型都不同

方法重载与返回类型无关

2.类的使用

   生成对象

                 (1) 类名  对象名 = new 构造方法();

                 (2) println(对象名);

                                             类名@十六进制的内存地址

                                             通过hashCode()获得

销毁对象

            (1)自动垃圾回收机制:会自动识别内存中不再会被使用的对象并将其销毁,释放内存

            (2)System.gc()方法强制启动垃圾回收器 

3.几个关键字

this

自身对象的替代调用自身的成员
区分全局变量和局部变量
构造方法的替代this();
this(xxx);

static

时间早于对象存在修饰类,静态类通过类名.xxx来访问
修饰变量,静态变量或类变量
修饰方法,静态方法或类方法
修饰代码块,静态块先于构造方法执行静态代码块>普通代码块>构造方法
非static修饰的成员,就叫实例成员通过对象名.xxx来访问

package

Ⅲ继承

 类继承的实现

 使用extends关键字

eg.

Person.java

package com.demo;
public class Person{
   public String name;
   public int age;
   public Person(){
   }
   public Person(String name.int age){
      this.name = name;
      this.age = age;
   }
   public void sayHello(){
      System.out,println("My name is " + name);
   }
}

 Employee.java

package com.demo;
public class Employee extends Person{
   public double salary;
   public Employee(){
   }
   public Employee(){
      this.salary = salary;
   }
   public Employee (String name,int age,double salary){
      super(name,age);
      this.salary = salary;
   }
   public double computeSalary(int hours,double rate){
   double salary = hours * rate;
   return this.salary + salary;
   }
}

EmployeeTest.java 

package com.demo;
pubic class EmployeeTest{
   public static void main(String[] args){
   Employee emp = new Employee("刘明",30,5000);
   system.out.println("姓名 = " + emp.name);
   system.out.println("年龄 = " + emp.age);
   emp.sayHello();
   system.out.println(emp.computeSalaey(10,50.0));
   }
}

这是测试

 方法覆盖

       注意点:(1)private方法不能覆盖

                     (2)父类中static方法可以被继承,但不能被覆盖

super关键字 

在父类中调用父类中被覆盖的方法格式:super.methodName([]paramlist)
在子类中调用父类的方法格式:super([paramlist])
在子类中访问父类中被隐藏的成员变量格式:super.variableName

 调用父类的构造方法

       子类的构造方法 

           (1)super调用父类

           (2)默认构造方法/无参数构造方法

Ⅳ多态

种类:

       (1)静态多态:也叫编译时多态,是通过方法重载实现的

       (2)动态多态:也叫运行时多态,是通过方法覆盖实现的

编译错误语句:

1,The constructor Employee() is undefined.没有定义构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值