Day06-面向对象编程

Posted 文姬公主

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day06-面向对象编程相关的知识,希望对你有一定的参考价值。

面向对象编程(OOP)

面向对象编程的本质:以类的方式组织代码,以对象的形式组织(封装)数据

抽象

三大特性

  • 封装

  • 继承

  • 多态

非静态方法之间可以互相调用不用new对象,但是在静态方法里面无法直接调用非静态方法,原因是静态方法是和类一起加载的,非静态方法是在类实例化之后才存在的,相当于一个已经存在的方法调还没存在的方法

构造器

  1. 没有返回值,必须和类名相同

  2. 使用new关键字,本质是在调用构造器

  3. 用来初始化值

  4. 一旦定义了有参构造,想使用无参构造,就必须显示定义一个无参构造

  5. this. 代表当前类的....

类与对象

  1. 类与对象:

    • 类是一个模版:抽象,对象是一个具体的实例

  2. 方法

    • 定义、调用

  3. 对应的引用

    • 引用类型 : 基本类型(8)

    • 对象是通过引用来操作的,栈-->堆

  4. 属性:字段field 成员变量

    默认初始化

    • 数字:0,0.0

    • char:u0000

    • boolean:false

    • 引用:null

    修饰符 属性类型 属性名=属性值!

  5. 对象的创建和使用

    • 必须使用new 关键字创造对象,构造器 Person wenji=new Person()

    • 对象的属性 wenji.name()

    • 对象的方法 wenji.sleep()

    • 静态的属性 属性

    • 动态的行为 方法

封装

高内聚、低耦合

属性私有:get/set

继承

  1. 子类继承父类,就会拥有父类的全部方法

  2. 变量的修饰符:public、protect、default、private

  3. 在java中所有的类都直接或间接继承object

  4. java中只有单继承,没有多继承

  5. 私有的东西无法被继承

  6. 调用父类的构造器,必须要在子类构造器的第一行

super

  • super调用父类的构造方法,必须在构造方法的第一个

  • super必须只能出现在子类的方法或者构造方法中

  • super和this不能同时调用构造方法

this和super的区别

代表的事物不同

  • this:本身调用者这个对象

  • super:代表父类对象的应用

前提

  • this在没有继承也可以使用

  • super只能在继承条件下才可以使用

构造方法

  • this():本类的构造

  • super():父类的构造

方法重写

重写都是方法的重写,和属性无关

  • 需要有继承关系,子类重写父类的方法

  • 参数列表必须相同

  • 修饰符:范围可以扩大:public>protect>default(默认)>private 比如父类是protected,子类可以是protected,public

  • 抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException--》Exception(大)

重写,子类的方法必须和父类一致,方法体不同

//静态方法
public class A extend B
 @Override
 public static void test()
   System.out.println("A->test");



public class B
 public static void test()
System.out.println("B->test");



public class C
 public static void main(String[] args)
   A a=new A();
   a.test();
   B b=new A();



//非静态方法
public class A extend B
 @Override
 public void test()
   System.out.println("A->test");



public class B
 public void test()
System.out.println("B->test");



public class C
 public static void main(String[] args)
   A a=new A();
   a.test();
   B b=new A();

静态方法和非静态方法调用区别很大

  • 静态方法:方法调用只和左边定义的数据类型有关,类的方法

  • 非静态方法:重写,调用的是对象的方法,对象是用子类new出来的,对象的方法

静态方法只能被继承不能被重写

多态

  • 一个类的实际类型是确定的,但是可以指向的引用类型就不确定了,父类的引用指向子类

Student s1=new Student();
Person s2=new Student();
Object s3=new Student();

注意事项

  1. 多态是方法的多态,属性没有多态

  2. 父类和子类,有联系,类型转换异常!ClassCastException

  3. 存在条件:继承关系方法, 需要重写,父类引用指向子类对象

  • static 方法,属于类,它不属于实例

  • final 常量

  • private 方法

  1. 把父类转换为子类,向下转型,强制转换

  2. 方便方法的调用,减少重复的代码,简洁

day9_面向对象编程

python面向对象编程

面向对象的开发语言

一切皆对象

面向过程

面向对象

面向对象它是包含面向过程的

类是一类东西,一个模型
实例是通过这个模型造出来的东西
对象即实例
实例化就是造实例的过程

面向的对象的特性

封装
就是把零散代码封装成一个函数,或者封装成一个类


继承
就是父类有的东西,你也有

多态
一种方法多种实现

 

命名规范

StrToDict,如果有多个单词的话,每个单词首字母都大写,如果是类名的话,首字母要大写,str_to_dict多个单词用下划线连起来也行

class Student: # 经典类

      pass

class Student2(): # 新式类,都用这种形式

      pass

class BuyCar(object): # 新式类
def fourS(self):
print(‘这里是4S店,要买车‘)
def dsj(self):
print(‘这里来交购置税‘)
def sgj(self):
print(‘车管所‘)
def jgj(self):
print(‘交管局‘)
# jxmc = BuyCar()# 实例化,类名加括号就是对这个类进行实例化,jxmc就是一个实例、对象
# jxmc.fourS()# 通过对象来调用
# jxmc.dsj()
# jxmc.sgj()
# jxmc.jgj()

属性就是类里面的变量

方法就是类里面的函数

以上是关于Day06-面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章

6-python自动化-day06-面向对象

Python自动化基础day06:面向对象学习

CGBTN2109-DAY06复习总结

CGBTN2111-DAY06总结复习

CGBTN2110-DAY06总结复习

CGBTN2111-DAY06总结复习