Python 4)面向对象的进一步拓展
来源:互联网 发布:知乎 不能修改提问 编辑:程序博客网 时间:2024/06/04 09:37
对象的性质
我们讲到了许多属性,但这些属性是类的属性。所有属于该类的对象会共享这些属性。比如说,鸟都有羽毛,鸡都不会飞。
在一些情况下,我们定义对象的性质,用于记录该对象的特别信息。比如说,人(person)这个类。性别是某个人的一个性质,不是所有的人类都是男,或者都是女。这个性质的值随着对象的不同而不同。李晨是人类的一个对象,性别是男;范冰冰也是人类的一个对象,性别是女。
当定义类的方法时,必须要传递一个self的参数。这个参数指代的就是类的一个对象。我们可以通过操纵self,来修改某个对象的性质。
面向对象所能接触到的关键字与知识点:
成员变量和局部变量的区别?
1)在类中的位置不同
成员变量:在类中,方法外
局部变量:在方法声明上或者在方法定义中
2)两个生命周期不同
成员变量:成员变量是通过加载所在的类(是随着类的加载而加载
局部变量:随着方法调用而存在,随着方法调用完毕而消失
3)在内存中的位置不一样;l
成员变量:在堆内存中(系统对成员变量默认初始化值)
局部变量:在栈内存中
4)初始值不同
成员变量:在成员变量位置可以先不赋值
局部变量:要么必须赋值,要么就是在使用之前赋值,否则报错
//成员变量
int num = 10 ;
public void show(){
//局部变量
int num2 = 20 ;
int num = 20 ;
上述是个面试题,望大家理解+熟记
封装和private:
private: 私有的,不可访问,可以修饰成员变量,也可以修饰成员方法
特点是被private修饰的成员只能在本类中访问,那么需要提供公共访问方法.并且提供对应的setXXX()/getXXX()方法.
定义一个学生类,提供成员变量姓名,和年龄
成员方法:show()方法
按照正常创建的步骤,给对象进行赋值,发现年龄的值可以是负数,不符合实际规则!就应该在Student类中来给age加上一个判断,定义一个方法给age进行判断给age加入了判断,发现还是负值还是可以存在;
针对这种情况:java给我们提供了一个关键字:private.
封装是将一个对象的成员进行私有化,并且提供对外的公共访问方法.提高了安全性,提高了代码的复用性.
this关键字:
this:代表的是当前的类的对象
不管是定义方法还是定义变量,都应该做到四个字:见名知意,给姓名和年龄进行赋值,发现问题:赋值的时候成员变量名称和局部变量名称一致,所以为了防止局部变量隐藏掉成员变量,java就提供了这个this关键字.
static关键字:
static关键字的注意事项:
成员:
静态成员
静态成员:简单记就是静态只能访问静态,并且静态成员中没有this关键字.
静态成员变量:只能访问静态变量
静态成员方法:只能访问静态成员方法
非静态成员
成员变量:可以是静态变量,也可以非静态变量
成员方法:可以是静态成员方法,也可以非静态成员方法
静态的特点:类名直接可以调用!
//非静态成员变量
public int num = 1 ;
//静态成员变量
public static int num2 = 2 ;
//非静态成员方法
public void show(){
System.out.println(num2);
System.out.println(num);}
//静态的成员方法,只能访问静态成员变量
public static void method(){
//System.out.println(num);
System.out.println(num2);
}
public void function(){
method();
}
public static void function2(){
//function() ;
method() ;
}
}
总结
通过self调用类属性
类属性和对象的性质额区别
成员变量和局部变量的区别
封装和private : show()方法, setXXX()/getXXX()
this关键字
static关键字
- Python 4)面向对象的进一步拓展
- 面向对象的进一步拓展
- 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- 9.Python基础 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- Python基础09 面向对象的进一步拓展
- 面向对象进一步理解
- 面向对象进一步内容
- Java面向对象高级--继承的进一步研究
- Java-面向对象(高级篇)--继承的进一步研究
- python的面向对象
- C#设置自定义文件图标实现双击启动(修改注册表)
- matlab persistent静态变量
- java学习第33天,String Date Calendar 集合
- 【Leetcode-Medium-547】Friend Circles
- 学习笔记:服务器shell编辑命令
- Python 4)面向对象的进一步拓展
- 11进程与线程
- UOJ 148/bzoj 1650(二分)(NOIP 2015)
- 010day(学习用freopen重定向输入和循环例题的练习)
- HDU
- 一道例题
- 黑客基础知识<百度文库>
- ImageLoader原理分析
- 洛谷 P2574 XOR的艺术