Java的面向对象
来源:互联网 发布:我的淘宝卖家中心 编辑:程序博客网 时间:2024/05/16 00:41
Java的面向对象
Java是一种面向对象的程序设计语言,是一种比较符合人类思维习惯的编程思想,当下是一种应用广泛,受到大众欢迎的编程语言。
1、 类与对象
1、 类
定义:类是对象的抽象,是一组对象的共同行为和特征
格式:public class 类名{}
1、 对象的创建与使用
创建:类名 对象名称 = new 类名();
使用:对象名称.对象成员;
例:
//创建一个People类public class People{ public String name = "Jack"; public int age = 10;}//写一个测试类来创建一个People对象public class Test{ public static void main(String[] args){ People people = new People();//创建一个People对象 //通过对象来应用他的成员变量 people.name、people.age //在输出语句中输出他的值 System.out.println("姓名:"+people.name+"年龄:"+people.age); }}
2、 构造函数
- 定义:用于构造对象的一种行为
- 格式:public 类名(){}
- 执行:创建当前类的对象的时候,自动执行
注意:
1. 除了接口类之外所有类都会有构造方法 2. 构造方法有返回值,返回的是对象在内存中的地址
例:
//创建一个People类public class People{ public String name; public int age; //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值) //如果不写构造函数并不代表此事就不存在构造函数,而是系统会默认一个构造函数 public People (String name,int age){ this.name = name; this.age = age; }}//写一个测试类来创建一个People对象public class Test{ public static void main(String[] args){ People people = new People("Jack",10);//创建一个People对象(自动执行了他的构造函数) //通过对象来应用他的成员变量 people.name、people.age //在输出语句中输出他的值 System.out.println("姓名:"+people.name+"年龄:"+people.age); }}
- 内存分析:(分为栈存储部分和堆存储部分)
- 垃圾清理机制:如果发现堆空间的对象地址没有变量引用,则有垃圾清理机制自动回收
3、方法重载
- 定义:同一个类中,多个方法的方法名相同,参数列表不同(类型、顺序、个数)的方法互为重载方法
- 分类:普通方法重载和构造方法重载
- 构造方法重载作用:可以初始化当前对象的一些属性
注意:
1. 一旦你重载了构造方法后,则默认的那个没有参数的构造方法就消失了 2. 如果还需要用无参的构造方法,则需要显性定义出来
例:
//创建一个People类public class People{ public String name; public int age; //构造函数的重载 //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值) public People(){} //接着又写一个构造函数(参数不同) public People (String name,int age){ this.name = name; this.age = age; } //普通方法的重载(方法名相同,参数不同) public void play(){} public void play(String name){} public void play(String name, int age){}}
4、继承
- 定义:子类继承父类的属性和方法(构造方法不能继承)
- 格式:public class 子类类名 extends 父类类名{}
注意:
1. 任何一个类都是Object类的子类 2. 继承只能是单继承,不能是多继承,但是可以多层继承
例:
//创建一个People类(相当于父类)public class People{ public String name; public int age; //构造函数的重载 //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值) public People(){} //接着又写一个构造函数(参数不同) public People (String name,int age){ this.name = name; this.age = age; } //普通方法的重载(方法名相同,参数不同) public void play(){}}//创建一个子类并且继承父类public class XiaoMing extends People { //普通方法可以继承也可以不继承 public void play(){}}
5、方法重写和多态
- 方法重写格式:子类重写父类的方法,方法名、参数列表、返回类型必须都要一样的
- 格式:public class 子类类名 extends 父类类名{}
自动转型格式:
1. 子类对象自动转型为父类的类型 2. 父类类型 对象名= new 子类类型();
注意:
1. 自动转型后的对象,如果子类重写了父类的方法,则执行的是重写后的
多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性
例:
//创建一个People类(相当于父类)public class People{ public String name; public int age; //构造函数的重载 //在这儿写一个构造函数(构造函数一般用于变量的初始化赋值) public People(){} //接着又写一个构造函数(参数不同) public People (String name,int age){ this.name = name; this.age = age; } //普通方法的重载(方法名相同,参数不同) public void play(){}}//创建一个子类并且继承父类public class XiaoMing extends People { //普通方法可以继承也可以不继承 //继承了父类的方法也就是对父类的方法的重写 public void play(){ System.out.println("小明继承了People"); }}//创建一个测试类public class Test{ public static void main(String[] args){ People xiaoming = new XiaoMing(); //此时xiaoming对象仍然属于父类People的对象, //因为对父类的play方法进行了重写,所以调用的是子类的play方法 //如果没用重写,则此时调用的是父类的play方法 xiaoming.play(); }}
6、方法分类
- 构造方法:public 类名(){}
- 普通方法:public 返回类型 方法名(){}
- 抽象方法:public abstract 返回类型 方法名();
普通类:public class 类名{}
1. 方法只能有普通方法和构造方法,一定不能有抽象方法 2. 可以构造对象
抽象类:public abstract class 类名{}
1. 三种方法都可以存在 2. 不能创建对象
接口:public interface 类名{}
1. 只能有抽象方法(可以省略掉中间的abstract修饰词) 2. 不能创建对象
例:
//创建一个People类(普通类)public class People{ //只能有普通方法和构造方法,不能有抽象方法 public People(){} public void play(){}}//创建一个People类(抽象类)public abstract class People{ //可以有普通方法和构造方法和抽象方法 public People(){} public void play(){} public abstract void run(){}}//创建一个People接口(接口)public interface People{ //只能有抽象方法(abstract修饰词可以省略不写) public void play(); public void run();}
7、接口抽象类和继承
- 抽象类和接口作用:用于当父类,被继承,约束普通类的成员定义
- 继承接口:public class 子类类名 implements 接口名{}
注意:
1. 接口可以多继承 2. 接口可以被继承,当然也可以继承,并且只能继承接口
例:
//创建一个People类(接口)public interface People{ public void play(); public void run();}//创建一个子类并且实现父类接口public class XiaoMing implements People { //接口中的所有抽象方法都要实现重写 public void play(){ System.out.println("小明重写了play方法"); } public void run(){ System.out.println("小明重写了run方法"); }}//创建一个测试类public class Test{ public static void main(String[] args){ People xiaoming = new XiaoMing(); xiaoming.play(); xioaming.run(); }}
0 0
- Java的面向对象
- java的面向对象
- java的面向对象!
- java的面向对象
- java的面向对象
- java的面向对象
- Java的面向对象
- java的面向对象
- java的面向对象
- Java的面向对象
- JAVA-面向对象的程序设计
- Java的面向对象编程
- Java-面向对象的含义
- Java 面向对象的特点
- Java的面向对象特性
- java面向对象的原则
- Java的面向对象特性
- Java面向对象的特征
- MySQL 中的数据类型介绍
- OpenMP并行程序设计——for循环并行化详解
- Java多线程编程
- C++三种容器:list、vector和deque的区别
- Visual Studio 2010 插件之Resharper
- Java的面向对象
- Oracle数据库学习笔记一
- Cocoapods使用详细说明
- 谁是窃贼
- [STL] next_permutation 的原理和使用
- 消息队列的两种模式
- ACM博弈论
- 文章标题
- android微信分享要注意的地方