浅谈java面向对象(一)

面向对象,指的是基于对象的编程方法论,其中对象包含数据和方法。

一、

 1、类和对象

1)、类是现实世界在计算机中的反映,它将数据和对这些数据的操作封装在一起。

类和对象是密切相关的,类可以实例化多个对象(但类本身并不占空间),实例化出的对象占有空间(用作储存成员变量)

class Student        //类
{
public:
	Student()
	{}
 
private:
	int _num;
	char* _name;
	int _age;
};
 
int main()
{
	Student s;   //对象-> 类的实例
	system("pause");
	return 0;
}
  1. 类的三大特性:封装、继承、多态。
  2. 封装:封装就是隐藏对象的属性和实现细节, 就可以直接从类外访问,函数的封装是一种形式,隐藏对象的属性和实现细节(函数内部),仅仅对外提高函数的接口和对象进行交互。

封装可以通过访问限定符来完成

public:公有的,类的成员可以从类外直接访问;

private/protected:类的成员不能从类外直接访问

package Formula

public class Dog {

    public static void main(String[] args) {
        HelloWorld hw = new HelloWorld();
    }


    protected void info(){
        System.out.println("i am animal");
}

Private B(){
          System.out.println("this is B");
}
}

注意:

    1、类的每个访问限定符可以多次在类中使用,作用域为从该限定符开始到下一个限定符之前/类结束

2、类中如果没有定义限定符,则默认为私有的(private)

3类的访问限定符体现了类的封装性

4)、类的定义

java中定义一个类,需要“class”关键字,一个自定义的类名以及一对程序体的大括号

[public][abstract|final]class<class_name>[extends<class_name>][implements<interface_name>] {
    // 定义属性部分
    <property_type><property1>;
    <property_type><property2>;
    <property_type><property3>;
    …
    // 定义方法部分
    function1();
    function2();
    function3();
    …
}

 

5)、类的大小

a.类的成员函数放在公共代码区,所有该类的对象共享这些成员函数,每个对象的大小为类内成员变量的大小之和。

bJava中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+Object引用的大小(4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接近8的整数倍的是24,因此此对象的大小为24byte

2、成员函数

1)、定义和使用成员函数

类外定义类外定义成员函数

class Student
{
public:
void display();//公用成员函数声明
private:
int num;
char name[20];
char sex;
};
void Student::display()//类外定义display函数,“::”是作用域运算符,在类外要加类名,不然就是全局函数
{
cout << "num:" << num << endl;//类函数必须先在“类体”中作“原型声明”,然后在“类外定义”
cout << "name:" << name << endl;//“类体位置”要在“函数定义”之前
cout << "sex:" << sex << endl;
}

还有内置成员函数;加入参数的成员函数;带返还类型的成员函数。

2)、函数参数的传递

a.简单数据类型采用值传递

  对于基础数据类型,直接复制新的对应基础类型数据。

b.引用数据类型采用引用传递

对于引用类型,复制的是对象的引用。在不改变对象引用的情况下改变形参的成员变量数据,会影响到实际参数的变化。

3)、函数重载

如果一个类中有多个具有相同名称但参数不同,与返回值无关的方法,则称为方法重载。

a.通过改变参数的数量来实现重载

public static void main(String[] args) {
	System.out.print(add(3,4));
}
//加法运算    两个整数的和
static int add(int a,int b) {
	return a+b;
}
 
//加法运算    三个整数的和
static int add(int a,int b) {
	return a+b;
}

b.通过更改数据类型来实现重载

public static void main(String[] args) {
	System.out.print(add(3,4));
    System.out.print(add(3.0,4.0));
}
//加法运算    两个整数的和
static int add(int a,int b) {
	return a+b;
}
 
//加法运算    两个小数的和
static float add(float a,float b) {
	return a+b;
}

3、构造函数

java构造函数,也叫构造方法,是java中一种特殊的函数。函数名与类名相同,无返回值。

一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。

构造函数是对象一建立就运行,给对象初始化,就包括属性,执行方法中的语句。而一般函数是对象调用才执行,用".方法名“的方式,给对象添加功能。

1)、构造函数的特点

1、构造函数函数名与类名相同

2、构造函数没有返回类型,如:String、void等

3、构造函数在类中没有体现出来,则默认有一个不带形式参数的默认构造函数

注:一般函数不能调用构造函数,只有构造函数才能调用构造函数。

2)、构造函数也分为有参数构造函数和无参数构造函数

3)、默认构造函数

当一个类中没有定义构造函数时,系统会给该类中加一个默认的空参数的构造函数,方便该类初始化。只是该空构造函数是隐藏不见的。

如下,Person(){}这个默认构造函数是隐藏不显示的。

class Person {
	Person() {
		//默认构造函数,默认不显示,若对构造函数重载后需要调用默认构造函数,则需显示定义默认构造函数
	}
}

4)、构造函数的重载

构造函数也是函数的一种,同样具备函数的重载特性。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值