关于对象的行为、数组、继承和类的高级概念(Java)
1.对象的行为:
(1)方法调用栈:所有的方法调用都维护在一个称为调用栈的结构中。
第一个被调用的方法就是main(),该方法是Jvm调用的,因此main()方法总是在调用栈的底部。
(2)调用方法:一个方法被调用时该方法就放在调用栈的顶部,直到方法执行完成。
三种情况:①方法返回一个值:一个基本数据类型或一个引用数据类型被传回给方法的调用者;
②方法不返回一个值:返回值被声明为void;
③方法抛出一个异常给方法的调用者。
Java中的方法只能出现在类中,没有声明为静态的方法只能在类的实例中调用。
(3)方法签名:方法签名不包含方法体内的任何语句,签名只是方法的声明部分。
①访问修饰符:public, private, protected, 默认访问修饰符;
②可选修饰符:static, final, abstract, native, synchronized(访问修饰符与可选修饰符的次序是随意的);
③返回值:方法签名必须包括返回值类型;
④方法名:方法名必须出现在返回值之后,可以是任何有效的Java标识符;
⑤形式参数列表:方法后面必须是一对括号括起来的形式参数列表。
(4)形参和实参: 形参:用于声明传递到方法中的数据的类型;
实参:传递给形参的数据。
Java中传递方式只有值传递。
(5)按值调用:
概念:在编程中,在方法调用之前复制数据的过程称为按值调用。
工作原理:不管传递给方法的实际参数是什么类型,相关的形式参数都会的到该数据的一份拷贝,这就是按值调用的工作原理。
缺陷:按值调用导致的唯一限制是方法不能改变引用的指向。
补充:1.断点调试:①定位(设置断点);
②启动调试;
③单步执行、观察;
④修改。
2.①用static修饰的属性或方法叫静态成员,为类的所有对象共享;
②在静态方法中,只能直接调用静态成员,不能直接调用非静态成员;
③在成员方法中,可以直接调用静态成员或非静态成员;
④采用类名打点方式调用静态成员。
3.局部变量在调用栈中分配内存当方法执行完成后,这些变量就被抛弃。
4.如果我们想传给方法的数据是一个很大的对象,那么,不是对象被传入,而是对象的引用被传入。
(6)方法重载:当一个类有两个到多个同名但是有不同的参数列表的方法时。
(7)构造器:在创建对象时被调用,它是类中的一个特殊的方法。
①用途:初始化对象中的成员变量。
②:⒈默认情况下类当中有一个无参构造器,编译时会自动生成;
⒉当写出带参构造器则不会产生无参构造器若要使用无参构造器则应写出;
⒊在构造器中调用同一类中的构造器,用this(),此语句必须是该构造器的第一天可执行语句。
③构造器与方法的区别在于其两个属性:⒈构造器名称必须与类名相同;
⒉没有返回值及返回值类型。
调用构造器的唯一时机是对象被实例化时。
⑤在Java中构造器内使用的this关键字与代表每个对象本身的this引用是不同的。
2. 数组:
(1)数组是存储在一个连续的内存块中的元素的集合,数组是引用类型。
①声明数组:int sum = new int[5]; (分配空间后数组的每个元素都会有默认值)
②对象数组中每个元素都是对象;
对象数组:单个元素类型[] 数组名 = new 类型[长度]
③数组中的元素通过索引值来访问。
(2)数组长度:用length属性来代表数组的大小,可以极大的减小数组访问越界的可能性。
(3) 数组初始化:用一条语句声明一个数组引用,实例化一个数组并且填充数组元素。它对创建一个包含已知数据的小数组是很有用的。
①int[] num = new int[]{ , , }
②int[] num = { , , }
③int[] num;
num = new int[]{ , , }
(4)数组复制:可以编写for循环将一个数组的内容复制给另一个,,也可以用System类中的静态方法arraycopy() .
arraycopy()方法的签名如下:
public static void arraycopy( Object source, int sourcePos, Object destination, int destinationPos, int length )
sourcePos————要复制的源数组
destinationPos————要复制给那个目标数组
length ————参数代表要复制的元素的数目
数组可以使用new关键字或者使用数组初始化器初始化。
javaDoc工具可以产生包含类信息的HTML页面, 该页面中包含在源代码中出现的任何javaDoc注释。
补充:
栈:一种数据结构,存取数据时FILO(first int last out). 保存局部变量的值:基本类型的值和引用类型的引用,即地址。
堆:用来存放动态产生的数据,如new出来的对象。
引用类型用 “==” 比较时,比较的事引用。
String:①concat();
eg:String a = "abc";
打印a 得到 abc.
打印a.concat( "123" ) 得到abc123.
②charAt();
eg:String a = "abc";
System.ou.println( a.concat(2) ); 打印出 c
③compareTo();
eg:String a = "are";
String b = "more";
a.compareTo(b): 在字典中即判断字符串a, b. 若a.compareTo(b)<0 , 则 a 在 b 之前。
④indexOf(int a);查找字符,开始索引
eg:agvajdgvjvbmsv. 查找a在该字符串中第一次出现的索引,若未出现该字符, 返回-1.
⑤subString(start, end);从start开始(包括),直到end结束(不包括)。
3.继承(初涉):通过扩展一个已有的类,并继承该类的属性和行为,类创建一个新的类 (可以继承public , protected 的成员 ),关键字 extends.
(1)已有的类称为父类,而新的类称为子类。父类派生子类,子类继承父类。
eg: public class Hourly extends Employee{}
4.类的高级概念:
①访问修饰符:
本类 | 同一包中不同类 | 不同包 | 子类 | |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default | √ | √ | ||
private | √ |
②封装:是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术。封装也被称为数据隐藏,其作用是保障数据安全性。
允许获取成员变量的get方法称为访问器方法,允许修改成员变量的方法称为修改器方法。
关于getter/setter:

1 public class SalesPerson{
2 private String name;
3 public SalesPerson(String name){
4 this.name = name;
5 }
6 public void setName(String name){
7 name = n;
8 }
9 public void getName(){
10 return name ;
11 }
12
13 }

关于对象的行为、数组、继承和类的高级概念(Java)的更多相关文章
- Java中继承,类的高级概念的知识点
1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩 ...
- java329 继承、类的高级概念
- java面向对象编程——第八章 类的高级概念
8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...
- java41 类的高级概念
- java类的高级概念
- 【JavaScript】类继承(对象冒充)和原型继承__深入理解原型和原型链
JavaScript里的继承方式在很多书上分了很多类型和实现方式,大体上就是两种:类继承(对象冒充)和原型继承. 类继承(对象冒充):在函数内部定义自身的属性的方法,子类继承时,用call或apply ...
- Java中关于继承、类、多态、接口的知识点
继承 含义:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类 优点:1)代码的重用性:2)子类扩展父类的属性和方法:3)父类的属性和方法可用于子类:4)设计应用程序 ...
- 49、多线程创建的三种方式之继承Thread类
继承Thread类创建线程 在java里面,开发者可以创建线程,这样在程序执行过程中,如果CPU空闲了,就会执行线程中的内容. 使用Thread创建线程的步骤: 1.自定义一个类,继承java.lan ...
- Java线程演示样例 - 继承Thread类和实现Runnable接口
进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括 ...
随机推荐
- 用LR录制终于可以在我的电脑上顺利弹出IE了
之前在我的电脑上各种折腾,由于是win764bit+IE11,安装了LR11连最基本的录制都没能搞定.google之后各种的尝试,也没能解决问题.狠下心来把IE11换成了IE8,终于可以勉强使用了,没 ...
- RPC之总体架构
要完成一个高可用.高性能的RPC框架,需要对其架构的设计进行梳理,这里参考xxl-rpc框架,对整个项目进行梳理. 以上就是项目的整个构架,分为四个部分: 第一个是服务发布与引入,基于JDK动态代理以 ...
- java初探(1)之登录终探
上一章讲了表单验证,数据验证和加密.这一章,将研究服务器和数据库的交互过程. 后端服务器有两种主流的形式,SQL数据库和NOSQL数据库.其中MYSQL属于SQL数据库,REDIS属于非SQL数据库. ...
- 解决ASP.NET上传文件大小限制------(转载人家的博客很好用,略作修改)
解决ASP.NET上传文件大小限制 (2012-06-26 15:18:01) 转载▼ 标签: it 第一种方法,主要适用于IIS6.0版本 一.修改配置Web.Config文件中的httpRun ...
- 【问题】【SpringBoot】记一次springboot框架下用jackson解析RequestBody失败的问题
最近项目中遇到了一个问题,费好大劲才发现问题所在,并且修复了问题,下面分享一下这个问题的定位和修复的新路旅程. 先说下背景:该项目用的是SpringBoot框架,主要功能为对外提供一些Restful ...
- vue mixin混入
基本结构 export default { data() { return {} }, computed: { }, methods: { }, filters: { }, created() { } ...
- 10 router
https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 1.路由守卫beforeEach router.beforeEach ...
- 抓包工具Burp Suite安装步骤(待补充)
Burp Suite V2.1(破解版)安装步骤:(可以自行下载破解版或汉化版) 百度网盘下载地址: 链接:https://pan.baidu.com/s/1bU5JME3OsEsXrSirTdesR ...
- XXE外部实体注入漏洞
XML被设计为传输和存储数据,XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具.XXE漏洞全称XML E ...
- pytest文档1-pytest+Allure+jenkins+邮箱发送
前言: 1.pytest+allure是目前很多公司使用较多的一种报告样式,因为它更详细,各种指标更直观(简单的说就是看着更高大上,更能装X). 环境准备: 1.Windows10 2.Allure ...