前言

大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢

类和面向对象

在Java中怎样理解对象,创建对象和引用;什么是引用,对于基础学习的同学,要深入了解引用。示例: String str = new String(); ;其中str为引用,并创建了一个对象。

引用

  • 如果一个变量的类型是类的类型,不是基本数据类型,那么这个变量就叫做引用。

Person person = new Person(); 这个的理解:

person叫做引用,new Person() 为创建了一个对象, " = " 表示左边的引用指向右边的对象。

面向对象思想

面向过程:就是站在过程的角度去思考问题,功能的执行过程,就是我们在实现功能的过程,类似方法,使用时,调用该函数就成。

面向对象:一种基于面向过程的编程思想,面向对象,就是站在对象的角度去思考问题。

面向对象的三大特征

  • 继承:就是子类继承父类,子类是一种特殊的类,可以直接或间接的获取父类的成员。

  • 封装:就是将对象的实现的细节隐藏起来,通过公共的方法向外暴露对象的功能。

  • 多态:多态就是把子类的对象赋值给父类的变量。

对象

对象的定义:状态和行为

一切事物都可以认为是对象,具有状态和行为。

类是对象的模板,类是构建对象的基础,对象的抽象是类,类的具体化则是对象,在代码中我们常说创建一个类,并在类中实例化对象。

对象的创建及其使用

在程序中,先有类,再有对象

  • 创建对象: 类 对象名 = new 类名();
  • 对象调用方法: 对象名.方法名();
  • 匿名对象:就是该对象没有名字,创建对象时,没有赋给一个变量

    匿名对象的示例:new Person();

匿名对象只能被使用一次,由 new Person() 就可以知道,创建后无法再次使用。

一个引用,多个对象

//当创建了一个引用,再把该引用指向另一个对象
Personone one = new Personone();
one = new Persontwo();
//代表该引用指向了另一个对象,那么之前的对象将不被该引用指向,那么之前的对象会被Java的回收机制处理

继承

在现实世界当中,继承就是儿子得到老子的东西,在面向对象的世界当中,继承就是一个类得到了另一个类当中的成员变量和成员方法

Java只支持单继承,不允许多继承,继承是为了减少重复代码

使用super调用父类构造函数的方法

class Person{
String name;
int age;
Person(){
System.out.prinltn("Person的无参数构造函数");
}
Person(String name,int age){
this.name=name;
this.age=age;
System.out.println("Person有参数的构造函数");
} void eat(){
System.out.println("定义吃饭的方法");
}
}
class Student extends Person{
//子类继承父类
Student(){
//父类
super();
System.out.println("Student的无参数构造函数");
}
Student(String name,int age,int id){
super(name,age);
this.id=id;
}
}
//测试类
class Test{
public static void main(String args[]){
Student student = new Student();
}
}

重写和重载

  • 重载:方法名一样,但是参数类型不一样(不同的参数个数,不同的参数类型,不同的参数次序)
  • 重写:子类中定义的某个方法与其父类有相同的名称和参数,则该方法被重写了

构造方法

public class Person{
Person(){
//构造方法
}
public static void main(String[] args){
Person person = new Person();
}
}

四种访问修饰符

  • private 私有的
  • default 不写
  • protected 受保护的
  • public 公共的

类属性,对象属性

类属性: 叫做静态属性

对象属性: 叫实例属性,非静态属性

类方法,对象方法

类方法: 叫做静态方法

对象方法: 叫实例方法,非静态方法

对象属性初始化,类属性初始化

对象属性初始化3种

  1. 声明该属性的时候初始化
  2. 构造方法中初始化
  3. 初始化块

类属性初始化2种

  1. 声明该属性的时候初始化
  2. 静态初始化块

书籍

Core Java

Effective Java

Thinking in Java

First Head Java

总结

  • 本文讲了详细讲解Java中的类和面向对象思想,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

第四节:详细讲解Java中的类和面向对象思想的更多相关文章

  1. 第五节:详细讲解Java中的接口与继承

    前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...

  2. 第九节:详细讲解Java中的泛型,多线程,网络编程

    前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...

  3. 第七节:详细讲解Java中的日期,java.util.date

    前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...

  4. 第六节:详细讲解Java中的装箱与拆箱及其字符串

    前言 大家好,给大家带来详细讲解Java中的装箱与拆箱及其字符串的概述,希望你们喜欢 装箱与拆箱 封装类有:Byte , short , Integer , Character , long , Fl ...

  5. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  6. 详细讲解JAVA中的IO流

    一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等.        ...

  7. 【转】详细讲解Java中log4j的使用方法

    转载地址:http://www.233.com/Java/zhuangye/20070731/142625631.html 1.Log4j是什么? Log4j可以帮助调试(有时候debug是发挥不了作 ...

  8. 详细讲解Java中方法的重载和重写

    首先讲讲方法的重载: Java的重载就是在类中可以创建多个方法,它们具有相同的名字,但是却有不同的参数. 判断是否重载只有两个条件: 1)相同的方法名 2)不同的参数 具体为: A.方法参数类型不同 ...

  9. 详细讲解nodejs中使用socket的私聊的方式

    详细讲解nodejs中使用socket的私聊的方式 在上一次我使用nodejs+express+socketio+mysql搭建聊天室,这基本上就是从socket.io的官网上的一份教程式复制学习,然 ...

随机推荐

  1. dsPIC30F 细节点问题不定期更新ing

    知识点1 TRISD: I/O 引脚 方向控制 寄存器 (1--input, 0--Output)LATD:  I/O 引脚 输出锁存器PORTD: 是双向I/O 端口 备注:LATD = 0x000 ...

  2. BP算法的矩阵推导

    目录 1. 需要的微积分知识 1.1 导数 1.2 求导的链式法则 2. 梯度下降法 2.1 梯度 2.2 梯度算法的解释 3.误差反向传播算法 3.1 理论推导 3.1.1 符号说明 3.1.2 推 ...

  3. springmvc webservlet 异步请求总结

    1:每次请求会启动一个新线程 上边在debug状态下, 每次请求一次,生成一个新的 thread  在此已经是245了 出现一个现象在debug模式下, 每次请求生成的线程,自动在红框那个位置停了下来 ...

  4. Webmagic 爬虫框架 爬取马蜂窝、携程旅游、汽车之家游记信息

    WebMagic学习 遇到的问题 Log4j错误 解决:在src目录下添加配置文件 log4j.properties log4j.rootLogger=INFO, stdout, file log4j ...

  5. 6B - 火星A+B

    读入两个不超过25位的火星正整数A和B,计算A+B.需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数.例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的 ...

  6. 部落划分Group[JSOI2010]

    --BZOJ1821 Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生 ...

  7. Maven中阿里云私服配置

    在国内maven仓库连接速度太慢 ,虽然对于很多互联网企业和大中型软件公司,建个镜像是分分钟的事.但对于个人开发者确实是个问题.解决办法可以用阿里云的MAVEN私服.有两种方法: 1.在$MAVEN_ ...

  8. react-01

    比较了半天VUE.Angular.React,最终选择React,下面从几个例子开始React的学习,先从单个的index.html,引用react.js开始 一.最简单的纯JS的代码 <!DO ...

  9. Sublime Text Snippets(代码片段)功能

    原文链接:http://www.bluesdream.com/blog/sublime-text-snippets-function.html 我们在编写代码的时候,总会遇到一些需要反复使用的代码片段 ...

  10. Java+Selenium自动化对非输入框的日历或日期控件的处理

    如图:          1.问题描述: 在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这 ...