概述
面向过程
以功能为基础,从上到下,由大问题到小问题,逐步细化。跟人类思维方式很像
面向过程的缺陷:
代码的重用性和可维护性差。
数据和对数据的操作分离,数据安全不能保证。
类与对象
对象:现实世界中某个具体的物理实体,每个对象都包含特定的属性和行为。
- 类:现实世界中具有相同属性和行为的物理实体的抽象。
类是对对象的抽象,是创建对象的蓝图,描述了所创建的对象共同的属性和行为。 - 对象是类的实例对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。
class Student{
int num;
String name; // 成员属性
String sex;
void study(){} // 成员方法(行为)}
类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体。
通常即包含成员属性和成员方法的抽象数据类型
面向对象
将数据及其操作封装为类,以类的对象作为程序的基本元素,通过向对象发送消息,从而调用相应方法完成各种功能。
特点
对象为基本元素
数据——安全
程序的维护量较小、代码的重用率高(继承)
程序 = 对象 + 对象 + 对象 + … …
三大特性
- 封装*
– Step1: 将数据和处理数据的方法封装为类
– Step2: 可以将某些成员声明为private从而达到信息隐藏的目的封装性 就是将属性(数据)和处理这些属性(数据)的行为(方法)结合起来,仅对外公开接口以达到信息隐藏的目的。
封装的优势:
– 封装是面向对象程序设计语言实现信息隐藏的方法。
– 封装隐藏了具体的实现细节,使某些成员设为私有从而提高了安全性和可靠性。
– Public、private、 一般封装属性,公开方法,每一个私有属性设置一个公开接口
- 继承
Java中的继承:
在软件开发中,若已有类A,要创建类B,而类A和类B属性和行为基本相同,则只需在A的基础上增加些新的内容即可
— 继承(inheritance)是面向对象软件技术当中的一个概念。 如果一个类B继承自另一个类A,就把这个B称为A的派生类,而把A称为B的父类基也可以称「A是B的超类」。 继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。
– 继承的优势
提高了代码的重用率,提高了编程效率。
-
多态
• 多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。
• 在面向对象理论中,多态性的定义是:同一操作作用于不同的类的对象,将产生不同的执行结果 。
• 多态的优势:
– 增强了程序的灵活性。 -
对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。
-
类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体
类定义的语法:
[访问权限修饰符] class 类名 {
[private/protected/public] 成员的声明和定义 ;
}
访问权限修饰符public private protected
---------------------------------------------
举例:
public class Student { //class是声明的关键字,
public String sex; //成员属性
//成员属性声明要以分号结尾,方法声明不用
public void study() { //成员方法
System.out.println("颤抖吧萌新们,感受java的魅力吧!");
}
}
对象的实例化格式:
//方法一:
类只是抽象的数据类型,类对象才是具体可操作的实体
<类名> <对象名> = new <类名> ([参数1,参数2,…]) ;
Student mary = new Student();//mary是对象名
mary.name(“1212”);//对象赋值
//方法二:
<类名> <对象名>;
<对象名> = new <类名> ([参数1,参数2,…]) ;
Student lily;
lily = new Student();
//定义对象时(stu s1=new stu( );)分配了属性成员内存,但没有方法内存。
//方法引用时隐藏了一个参数,默认引用对象操作人的返回
类成员的访问
- 对象名.属性名
- 对象名.方法名(参数1,参数2)
封装的实现:
通过访问修饰符来实现信息隐藏
一般将成员属性使用private修饰
定义用来访问成员属性的方法,并使用public修饰
//解决属性私有调用问题,用公开的内部函数返回私有的内部属性值,对象名.公开方法
public class Student {
private String name ;
private int age;
private String stuId ;
//返回对象内容
public int getAge() { return age; }
public void setAge(int _age) { age = _age; }
public String getName() { return name; }
//通过参数更改对象内容
public void setName(String _name) { name = _name; }
public String getStuId() { return stuId; }
public void setStuId(String _stuId) { stuId = _stuId; }
}
//主函数操作:
Student stu1= new Student(); //实例化一个对象
stu1.setName("zhang"); //设置学生对象姓名
String name = stu1.getName();//获取学生对象姓名
System.out.println(name);
类体—成员方法:
Java中方法只能定义在类中,称为类的成员方法,基本的语法:
- [方法修饰符] 方法返回值类型 方法名([<参数列表>]) { 方法体 ; }
举例:public int getAge() { return age; }
成员方法修饰符:主要有public、private、protect、final、static、abstract和synchronized7种, 用来说明方法的访问权限。
- public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用;
- public static void 修饰是静态方法,属于类,使用类名.方法名直接调用。
- 当参数是基本数据类型时,方法不能修改实际参数的值。
- 当参数是引用类型时,方法通过地址引用改变了实际参数对象的内容。
方法的返回值类型
- Java语言要求,在成员方法说明中必须指明返回值的类型,如不需要返回值,返回值类型被说明为void。
void fun() {} - 返回值用return语句来实现,如有返回值,return语句要加返回表达式,且表达式的值必须与方法中的返回值类型一致。
int fun() {
return 返回的数值;
}
重载:
同一个类中两个或以上的同名方法,参数类型、个数或顺序不同,称为方法的重载。
方法重载的依据:方法名相同但是参数列表必须不同
返回值类型可以不同(返回值类型不作为重载的依据)
是否是静态的也不作为重载依据
重载的方法之间可以互相调用
构造方法
功能:初始化对象
方法名:与类名相同
参数:可有,可无
返回值:不指定返回值(不能写void )
内容:任意,通常只包含成员赋值语句
调用方法:使用new创建对象时自动调用
特殊成员方法-构造方法
import java.util.*;
public class proctise {//构造方法定义
private String name; //私有常量
public proctise(){
System.out.println("this is constructor");
}
public proctise(String name) {
this.name = name;
System.out.println("the student name is: " + this.name);
}
public String getName() { return name; } //成员方法定义
public void setName(String name) { this.name = name; }
public static void main(String[] args) { //主类
proctise stu1 = new proctise(); //调用无参构造方法
proctise stu2 = new proctise("lisi"); //调用带参构造方法
stu1.setName("zhangsan");
System.out.println(stu1.getName());
}
}
/*
结果:
this is constructor
zhangsan
the student name is: lisi
*/
在对象的生命周期中构造方法只会调用一次。
一个类中如果没有定义构造方法,Java编译器会自动为该类产生一个默认的构造方法。默认产生的构造方法是一个无参的,什么也不做的空方法。
只要类中有显示声明的构造方法,Java编译器就不产生默认的构造方法。
在一个类中可以定义多个构造方法,但构造方法的参数列表不能相同。
构造方法实现时可以通过this关键字调用已经存在的构造方法。
public class Student {
private String name;
private int age;
public Student(){ //构造方法定义
System.out.println("this is constructor");
}
public Student(String name) {
this();
this.name = name;
}
public Student(String name, int age){
this(name);
this.age = age;
}
}
this关键字:
this用于引用本类中的属性和方法
-》this.属性、this.方法()
this调用本类的构造方法
-》使用this()、this(参数)的形式
-》this调用构造方法,只能放在重载的构造方法中的第一行
this还可以作为返回值,返回“当前调用方法”的那个对象的引用。
public class Count {
private int num;
public Count add(){
num++;
return this;
}
public int getNum() {
return num;
}
public static void main(String[] args) {
Count cou = new Count();
cou.add().add();
System.out.println(cou.getNum());
}
}
垃圾收集器
在C程序中,手工清理或删除缓存中的数据
可以通过free进行清理工作。
强制垃圾回收有如下两个方法 :
调用System类的gc () 静态方法 ;
调用Runtime对象的gc () 实例方法 ;
零碎知识点
- Int a=10;是初始化,int a;a=10;是赋值
- this(),在构造方法1中调用构造方法2,注意:必须放在构造方法1的第一行
1、变量命名冲突的时候,用于区分。
2、用于在类中调用构造函数。
如下:
public class test{
private int a;
private int b;
private int c;
public test(int a,int b){//作用1
this.a = a;
this.b = b;
}
public test(int a,int b,int c){//作用2
this(a,b);
this.c = c;
}
}
注意:在static方法中不能使用this,原因是静态方法存在于方法区,而对象存在于堆。
最后
以上就是愉快月亮为你收集整理的第四章-类与对象类与对象三大特性的全部内容,希望文章能够帮你解决第四章-类与对象类与对象三大特性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复