面向对象

面向对象的思想就是值我们要实现一个共功能的时候,我们不自己去做,而是找别人帮我们去做,帮我们去做的这个人就是对象。面向对象强调的是谁来帮我实现这个功能。

类与对象的关系

:是一组相关属性和行为的集合,类可以看成是事物的模板

对象:对象是一类事物的具体体现,对象是类的一个实列,必然具备该类的事物属性和行为。

类是对象的模板,对象是类的实体

下面来定义一个学生类

//类具有属性和行为,属性也叫做成员变量,行为也叫做成员方法
public class Student{
//定义成员变量,因为每一个学生都有不同的姓名和年龄,所以可以把这两个作为成员变量,成员变量要定义在类中,方法外面,如果定义在方法里面,就叫做局部变量。变量是有作用域的,成员变量的作用域在整个类中,局部变量的作用域在该方法的里面。
String name;
int age;
//定义方法,每一个学生都有着吃饭,睡觉,学习的行为,也就是方法
public void eat(){
System.out.println("我是"+name+"在吃饭");
}
public void sleep(){
System.out.println("我是"+name+"在睡觉");
}
public void study(){
System.out.println(name+"今年"+age+"岁了,要认真学习了");
}
}

刚刚定义好了类,现在让我们来使用他吧

类的使用需要创建对象

//创建对象的格式
//类的名称 对象名 = new 类名称();
//成员变量的使用 对象名.成员变量
//成员方法的使用 对象名.成员方法()
public class AStudent{
public static void main(String[] args){
/*创建Student类对象,对象创建好之后就可以使用类了,也就是说可以
使用对象名去调用类的成员方法,还可以对该类的成员变量赋值*/
Student stu = new Student();
//对成员变量赋值,将右侧的刘备赋值交给stu对象当中的name成员变量
stu.name = "刘备";
stu.age = "18";
//调用成员方法
stu.eat();
stu.sleep();
stu.study();
}
}

使用对象类型作为方法的参数

什么是对象类型,new出来的就是对象类型

public class AStudent{
public static void main(String[] args){
Student one = new Student();
one.age = 18;
one.name = "新垣结衣";
method(one);
}
//以Student类做为参数传递,传递进来的对象中的方法和变量可以使用param参数名称来调用
public static void method(Student param) {
System.out.println(param.name);//新垣结衣
System.out.println(param.age);//18
param.study();//新垣结衣今年18岁了,要认真学习了
} }

使用对象类型作为方法的返回值

  public static void main(String[] args){
//返回值类型是一个Student,所以需要Student来接收该返回值
Student two = method();//method()方法的返回值类型是Student;
two.study();
}
public static Student method() {
Student one = new Student();
one.name="曹操";
one.age = 90; return one;

局部变量与成员变量的不同

  1. 定义的位置不一样

    局部变量:在方法的内部

    成员变量:在方法的外部,直接写在类当中

  2. 作用范围不一样

    局部变量:只有方法当中才可以使用,出了方法就不能再用

    成员变量:整个类都可以通用

  3. 默认值不一样

    局部变量:没有默认值,如果想使用,必须要手动赋值

    成员变量:如果没有赋值,会有默认值,规则和数组一样

面向对象的三大特征之封装性

  1. 方法就是一种封装
  2. 关键字private也是一种封装

封装就是将一些细节信息隐藏起来,对于外界不可见

private关键字一旦用于成员变量,那么该成员变量就只能够在本来中访问,不能再其它类中访问

public class Student{
String name;
//写在对age设置private,使他只能够再本类中访问
private int age; public void setAge(int num){
//未来避免年龄传入进来的不合理加上if判断语句
//条件为真就把num赋值给age
if(0<num&&num<150){
age = num;
}else{
System.out.println("年龄不合理");
}
}
public int getAge(){
return age;
}
}

现在写多一个类来间接访问age;

public class AStudent{
public static void main(String[] args){
//创建了Student对象,就可以使用她的变量和方法了
Student one = new Student();
//调用了方法setAge.传递了参数
one.setAge(18);//int age = 18;
//设置了private的要通过setAge来访问,没有设置private的可以直接对象名.成员变量来访问
System.out.println(one.name+" "+one.getAge());
}
}

构造方法

构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象是,其实就是再调用构造方法,构造方法的名称必须和所在类的名称完全一样,构造方法不要写返回值类型。

如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,没有方法体。

一旦自己编写了构造方法,那么编译器将不会给你赠送构造方法

格式:

public 类名称(参数类型 参数名称){方法体}

public class Student{
public Student(//我是参数){
System.out.println("构造方法被调用了");//我是方法体
}
}
//new 对象就是在调用构造方法
public class AStudent{
public static void main(String[] args){
//构造方法new对象的时候就被执行
Student stu = new Student();//创建Student对象,就是在调用Student的构造方法
//运行程序将会得到 构造方法被调用了
}
}

定义一个标准类

//new 对象就是在调用构造方法
public class AStudent{
public static void main(String[] args) {
Student one = new Student();
one.setAge(20);
one.setName("孙权");
System.out.println("姓名--"+one.getName()+" 年龄--"+one.getAge()); Student two = new Student("曹操",30);
System.out.println("姓名--"+two.getName()+" 年龄--"+two.getAge());
}
}

7天学完Java基础之2/7的更多相关文章

  1. 7天学完Java基础之0/7

    笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd​

  2. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  3. 7天学完Java基础之5/7

    接口 接口就是一种公共的规范标准 是一种引用数据类型 定义格式 public interface 接口名称{} java7 中接口可以包含常量,抽象方法:Java8 还可以额外包含默认方法,静态方法: ...

  4. 7天学完Java基础之4/7

    静态static 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一份数据 静态static 关键字修饰成员变量 public class St ...

  5. 7天学完Java基础之7/7

    Object类的toString方法 类Object是类层次结构的根类 每个都使用Object作为超类 所有对象都实现这个类的方法 //这个是Object类的子类,实现了其所有方法 public cl ...

  6. 7天学完Java基础之6/7

    final关键字的概念与四种用法 final关键字代表最终,不可改变的 常见四种用法: 可以用来修饰一个类 当前这个类不能有任何子类 可以用来修饰一个方法 当final关键字用来修饰一个方法的时候,这 ...

  7. 7天学完Java基础之3/7

    API概述 什么叫做API? API(Application Programming lnterface),应用程序编程接口. 所谓API就是值好多的类,好多的方法,JDK给我们提供了很多现成的类,我 ...

  8. 7天学完Java基础之1/7

    方法重载 package cn.itcat.day04.demo01; //方法重载就是参数个数不同,参数类型不同,参数类型的顺序不同 //方法重载与参数名称无关,与方法返回值类型无关 //方法重载方 ...

  9. 学完 JAVA SE后学什么 。。。

    我觉得学习j2ee一定要循序渐进,千万不要太急了.把java基础打牢一点,再牢一点.各位,你们在后面学习什么 struts,hibernate,spring,ajax..都很轻松. 第一个阶段(jav ...

随机推荐

  1. Unity添加自定义快捷键——UGUI快捷键

    在Editor下监听按键有以下几种方式: 自定义菜单栏功能: using UnityEngine; using UnityEditor; public static class MyMenuComma ...

  2. Flask03 路由控制(转换器)、反转、请求方法控制

    1 提出问题 如何实现前端传过去的路径时动态的(即:多个url对应一个url视图函数) 例如: 浏览器中输入 http://127.0.0.1:5000/test/good/ 或者 http://12 ...

  3. ProtoBuf练习

    环境设置 项目地址 https://github.com/silvermagic/ProtoBufDev.git 操作系统 64位 Fedora 24 安装protobuf $ git clone h ...

  4. Cogs 1435. [USACO NOV]金发姑娘和N头牛

    1435. [USACO NOV]金发姑娘和N头牛 ★★☆   输入文件:milktemp.in   输出文件:milktemp.out   简单对比时间限制:1 s   内存限制:256 MB [题 ...

  5. 解决LINUX下SQLPLUS时上下左右键乱码问题

    window下的sqlplus可以通过箭头键,来回看历史命令,用起来非常的方便. 但是在linux里就没有这么方面了,错了一个命令,我们必须重新敲一次,辛苦了手指头叻. 看到一个文章,很方便的一招,给 ...

  6. 开发外包注意事项二——iOS APP的开发

    目前我的方式是按时间算. 首先这得建立在双方的信任基础上. 以我做过的Case为例: 首先会和客户一起评估需求: 1. 哪些功能是最为重要的 2. 哪些功能是可以删除的 3. 用什么策略保证APP的出 ...

  7. CLR Via C#: CLR 的执行模型

    CLR(Common Language Runtime)公共语言运行时:是一个可由多种编程语言使用的“运行时”. 编译源代码文件的过程: C# 源代码文件 -> C# 编译器->托管模块( ...

  8. 关于状态压缩DP以及状态压缩

    首先要明确:状态压缩是利用数字来代表一组序列的方法,从而降低序列访问的复杂度,本质上跟HASH有着差不多的思想,但是其实就是数位运算的一种 定义:集合中共有N个数字,其中每个数字均小于K,能么我们可以 ...

  9. php保存网络图片到本地

    //保存网络图片 function getimg($url) { $state = @file_get_contents($url,0,null,0,1);//获取网络资源的字符内容 if($stat ...

  10. Java基础笔记(十)—— 数组

    数组是具有相同类型的数据的集合,是一种引用数据类型,一般具有固定的长度,并且在内存中占据连续的空间. 数组声明:数据类型[ ] 数组名;             数据类型 数组名[ ]; 如:int[ ...